2024-09-28 21:11:37 发布
网友
在Linux上有没有办法检查正在运行的Python守护进程在做什么?也就是说,不插入代码也不终止它?最好我想知道模块的名称和当前运行的行号。
传统的调试工具如strace、pstack和gdb对Python代码不是很有用。大多数堆栈帧只包含解释器代码中的函数,如PyEval_evalFramex和PyEval_evalDeex,它不会给您任何提示,说明在执行所在的.py文件中存在。
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中的一些答案适用于这种情况:
pyrasite(这是为我工作的那个):
$ sudo pip install pyrasite $ echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope $ sudo pyrasite 16262 dump_stacks.py # dumps stacks to stdout/stderr of the python program
pyringe
winpdb允许您attach to a running python process,但是要做到这一点,您必须以这种方式启动python进程:
然后,在设置密码之后:
您可以启动winpdb to File>;附加到(或文件>;分离)进程。
在像Linux这样的POSIX系统上,可以使用好的旧GDB,请参见
还有一个优秀的PyCharm IDE(可用的免费社区版本),它可以从IDE内部附加到正在运行的Python进程,在引擎盖下使用Pdb 4,请参阅以下博客:
Showing the stack trace from a running Python application中的一些答案适用于这种情况:
pyrasite(这是为我工作的那个):
pyringe
相关问题 更多 >
编程相关推荐