检查正在运行的进程正在执行的操作:打印未构造的Python程序的堆栈跟踪

2024-09-28 21:11:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在Linux上有没有办法检查正在运行的Python守护进程在做什么?也就是说,不插入代码也不终止它?最好我想知道模块的名称和当前运行的行号。

传统的调试工具如strace、pstack和gdb对Python代码不是很有用。大多数堆栈帧只包含解释器代码中的函数,如PyEval_evalFramex和PyEval_evalDeex,它不会给您任何提示,说明在执行所在的.py文件中存在。


Tags: 模块工具代码名称进程堆栈linux传统
3条回答

winpdb允许您attach to a running python process,但是要做到这一点,您必须以这种方式启动python进程:

 rpdb2 -d -r script.py

然后,在设置密码之后:

A password should be set to secure debugger client-server communication.
Please type a password:mypassword

您可以启动winpdb to File>;附加到(或文件>;分离)进程。

在像Linux这样的POSIX系统上,可以使用好的旧GDB,请参见

还有一个优秀的PyCharm IDE(可用的免费社区版本),它可以从IDE内部附加到正在运行的Python进程,在引擎盖下使用Pdb 4,请参阅以下博客:

Showing the stack trace from a running Python application中的一些答案适用于这种情况:

相关问题 更多 >