Bjö*_*ist 20 python debugging daemon process stack-trace
有没有办法在Linux上检查正在运行的Python守护进程正在做什么?也就是说,没有检测代码而没有终止它?我希望得到模块的名称和当前正在运行的行号.
常规调试工具(如strace,pstack和gdb)对Python代码不是很有用.大多数堆栈帧只包含来自解释器代码的函数,如PyEval_EvalFrameEx和PyEval_EvalCodeEx,它不会在执行的.py文件中提供任何提示.
显示来自正在运行的Python应用程序的堆栈跟踪的一些答案适用于这种情况:
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
Run Code Online (Sandbox Code Playgroud)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 到“文件”>“附加到”(或“文件”>“从中分离”)进程。
归档时间: |
|
查看次数: |
5970 次 |
最近记录: |