如果是命令行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":