从pdb模块运行调试程序直到某个函数时,如何调用pdb?

时间:2015-12-17 20:51:54

标签: python python-2.7 debugging pdb

我发现有两种方法可以调用pdb。

  • 在操作系统的shell中,运行pdb myscript.py,它会立即调用pdb并允许在myscript.py的运行时运行pdb命令。

  • myscript.py中的
  • ,导入pdb模块,并在myscript.py中的pdb模块中添加一些函数。然后在没有pdb作为myscript.py的情况下运行python myscript.py,当myscript.py的运行到达myscript.py中的第一个pdb函数时,将调用pdb,这允许运行pdb命令运行myscript.py

我的问题是:

  • pdb脚本(以第一种方式在shell中运行)和pdb模块(以第二种方式导入myscript.py)是否都在同一个脚本中pdb.py

  • 第二种方式,在调试程序运行到pdb模块的函数之前,如何调用pdb,以便在调用pdb后两种方式看起来相同?

1 个答案:

答案 0 :(得分:1)

在我的Debian系统上,各种版本的/ usr / bin / pdb(包括pdb3.5和pdb2.7)是指向../lib/python?.?/pdb.py的符号链接(对于两个版本的我提到的pdb?。?是3.5或2.7)。所以对我来说,模块和脚本实际上是相同的文件(有两个不同的路径名)。该脚本通常以“一个python模块是一个脚本”的方式有条件地调用pdb.main()。

如果调试的python程序使用不带pdb命令的pdb模块,那么常见的方法是在适当的位置插入对pdb.set_trace()的调用(它在使用时具有与pdb断点相同的意图) pdb命令)。

另一种调用pdb的常用方法是使用pdb.run;我在gdb的python解释器中使用了对pdb.run的调用来调试用python编写的gdb扩展代码。