首页 > 编程 > Python > 正文

pdb debug python

2019-11-08 00:28:12
字体:
来源:转载
供稿:网友
如果是命令行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) helpDocumented 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        whatisbreak  condition  down      j       p     return   unalias  where Miscellaneous help topics:==========================exec  pdbUndocumented 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 22Breakpoint 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":
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表