检查正在运行的进程正在做什么:打印未经检测的Python程序的堆栈跟踪

Bjö*_*ist 20 python debugging daemon process stack-trace

有没有办法在Linux上检查正在运行的Python守护进程正在做什么?也就是说,没有检测代码而没有终止它?我希望得到模块的名称和当前正在运行的行号.

常规调试工具(如strace,pstack和gdb)对Python代码不是很有用.大多数堆栈帧只包含来自解释器代码的函数,如PyEval_EvalFrameEx和PyEval_EvalCodeEx,它不会在执行的.py文件中提供任何提示.

Nic*_*lay 8

显示来自正在运行的Python应用程序的堆栈跟踪的一些答案适用于这种情况:

  • Pyrasite工作得很好,感谢小费! (2认同)

unu*_*tbu 2

winpdb 允许您附加到正在运行的 python 进程,但要做到这一点,您必须以这种方式启动 python 进程:

 rpdb2 -d -r script.py
Run Code Online (Sandbox Code Playgroud)

然后,设置密码后:

A password should be set to secure debugger client-server communication.
Please type a password:mypassword
Run Code Online (Sandbox Code Playgroud)

您可以启动 winpdb 到“文件”>“附加到”(或“文件”>“从中分离”)进程。