pdb debug python

如果是命令行debug的话,只要加上 -m pdb。可以看到(Pdb)就可以debug了。看到举例如下:
/grub-master$ python -m pdb util/import_unicode.py unicode/UnicodeData.txt unicode/BidiMirroring.txt unicode/ArabicShaping.txt grub-core/unidata.c
> /home/tao/grub-master/util/import_unicode.py(19)<module>()
-> import re
(Pdb)
 输入help 可以得到pdb的所有命令
(Pdb) help

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

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

Undocumented commands:
======================
retval  rv

常用的就是
查看:l
(Pdb) l
 14      #*
 15      #*  You should have received a copy of the GNU General Public License
 16      #*  along with GRUB.  If not, see <http://www.gnu.org/licenses/>.
 17      #*
 18      
 19  ->    import re
 20      import sys
 21      
 22      if len (sys.argv) < 3:
 23          print ("Usage: %s SOURCE DESTINATION" % sys.argv[0])
 24          exit (0)

断点设置:b + 行号
(Pdb) b 22
Breakpoint 1 at /home/tao/grub-master/util/import_unicode.py:22

继续运行:c
(Pdb) c
> /home/tao/grub-master/util/import_unicode.py(22)<module>()
-> if len (sys.argv) < 3:

查看变量:p
 (Pdb) p sys.argv
['util/import_unicode.py', 'unicode/UnicodeData.txt', 'unicode/BidiMirroring.txt', 'unicode/ArabicShaping.txt', 'grub-core/unidata.c']

看到堆栈:bt
(Pdb) bt
  /usr/lib/python2.7/bdb.py(400)run()
-> exec cmd in globals, locals
  <string>(1)<module>()
> /home/tao/grub-master/util/import_unicode.py(22)<module>()
-> if len (sys.argv) < 3:
单步运行:n
(Pdb) n
> /home/tao/grub-master/util/import_unicode.py(25)<module>()
-> infile = open (sys.argv[3], "r")
(Pdb)
> /home/tao/grub-master/util/import_unicode.py(26)<module>()
-> joining = {}
(Pdb)
> /home/tao/grub-master/util/import_unicode.py(27)<module>()
-> for line in infile:
(Pdb)
> /home/tao/grub-master/util/import_unicode.py(28)<module>()
-> line = re.sub ("#.*$", "", line)

退出:q
第二中方式是在原文件中加测试点,相当于断点
首先在源文件中埋断点:
for line in infile:
     line = re.sub ("#.*$", "", line)
     line = line.replace ("\n", "")
     line = line.replace (" ", "")
     if len (line) == 0 or line[0] == '\n':
         continue
     sp = line.split (";")
     curcode = int (sp[0], 16)
     import pdb
     pdb.set_trace()

然后直接运行就可以看到程序停在我们加pdb.set_trace()的下一行了

~/grub-master$ python util/import_unicode.py unicode/UnicodeData.txt unicode/BidiMirroring.txt unicode/ArabicShaping.txt grub-core/unidata.c
> /home/tao/grub-master/util/import_unicode.py(37)<module>()
-> if sp[2] == "U":

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值