我发现有两种方法可以调用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后两种方式看起来相同?
答案 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扩展代码。