Python Ipdb Debug简单使用

2021/10/29 9:10:06

本文主要是介绍Python Ipdb Debug简单使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Python Ipdb Debug简单使用

参考链接:

https://xmfbit.github.io/2017/08/21/debugging-with-ipdb/

https://blog.csdn.net/u014015972/article/details/51705292

https://wulc.me/2018/12/21/ipdb 使用小记/

1 安装

pip install ipdb

2 使用

ipdb 的使用方法一般有两种:集成到源代码通过命令交互

1、集成到源代码:(不推荐)

import ipdb
var1 = 23
ipdb.set_trace()
var2 = 23
# some code

上面的代码会在执行完 var1 = 23 这条语句之后停止,然后进入 debug 环境

2、通过命令交互(推荐)

通过 python -m ipdb your_code.py 来运行你要调试的代码,即可进入 debug 环境。

# 如下,便是我 debug 的一个片段
ipdb> b 583                                                                                             
Breakpoint 4 at /root/FSL/DPGN/main.py:583
ipdb> c                                                                                                 
> /root/FSL/DPGN/main.py(583)<module>()
    581 
    582 if __name__ == '__main__':
4-> 583     main()

下面给大家介绍一些常用的命令:

# 1 帮助命令:键入 h 即可查看所有命令,键入 h <command> 即可查看 <command> 的作用,如下:
ipdb> h                                                                                                 

Documented commands (type help <topic>):
========================================
EOF    cl         disable  interact  next    psource  rv         unt   
a      clear      display  j         p       q        s          until 
alias  commands   down     jump      pdef    quit     source     up    
args   condition  enable   l         pdoc    r        step       w     
b      cont       exit     list      pfile   restart  tbreak     whatis
break  continue   h        ll        pinfo   return   u          where 
bt     d          help     longlist  pinfo2  retval   unalias  
c      debug      ignore   n         pp      run      undisplay

Miscellaneous help topics:
==========================
exec  pdb

ipdb> h p                                                                                               
p expression
        Print the value of the expression.

# 2 执行下一条语句:键入 s 即可进入函数内部(若下一条语句为调用一个函数),键入 n 即执行下一条语句

# 3 打断点:键入 b line_num 的方式即可在本文件的line_num行打上断点, 键入 b file_name:line_num 即可给指定的文件打上断点,如下:
ipdb> b 565		# 本文件                                                                                             
Breakpoint 4 at /root/FSL/DPGN/main.py:565
ipdb> b /root/FSL/DPGN/backbone.py:62	# 指定文件                                                                   
Breakpoint 5 at /root/FSL/DPGN/backbone.py:62

# 4 一直执行直到遇到下一个断点:键入 c 执行代码直到遇到某个断点或程序执行完毕

# 5 打印某个变量的值:键入 p <Variables>
ipdb> p enc_module                                                                                      
ResNet12()

# 6 查看某一变量的类型: 键入 whatis <Variables>
ipdb> whatis enc_module                                                                                 
<class 'backbone.ResNet12'>

# 7 查看调试到哪里:键入 w
ipdb> w                                                                                                 
  /root/miniconda/envs/DPGN/lib/python3.5/bdb.py(431)run()
    430         try:
--> 431             exec(cmd, globals, locals)
    432         except BdbQuit:

  <string>(1)<module>()

  /root/FSL/DPGN/main.py(583)<module>()
    581 
    582 if __name__ == '__main__':
1-> 583     main()

> /root/FSL/DPGN/main.py(487)main()
2   486         enc_module = ResNet12(emb_size=config['emb_size'], cifar_flag=cifar_flag)
--> 487         print('Backbone: ResNet12')
    488     elif config['backbone'] == 'convnet':
    
# 8 退出:键入 q
ipdb> q                                                                                                 
Post mortem debugger finished. The main.py will be restarted

后续会继续补充,未完,待续……(10.29 02:29)



这篇关于Python Ipdb Debug简单使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程