mie*_*nik 5 python debugging trace
我编写的一个相当大的Python程序可以运行,但是有时,在运行几分钟或几小时后,在不容易再现的瞬间,它会挂起并且不输出任何信息到屏幕上。
我当时不知道它在做什么,它在代码的哪一部分。
如何在调试器或其他工具中运行此程序,以查看程序在挂起时正在执行哪些代码行?
它太大,无法在各处放置“打印”语句。
我做了:
python -m trace --trace /usr/local/bin/my_program.py
Run Code Online (Sandbox Code Playgroud)
但这给了我很多输出,我什至看不到任何东西,只有几百万行在屏幕上滚动。
最好的情况是,我可以使用“ kill -SIGUSR1”或类似的命令向程序发送一些信号,然后程序会进入调试器并向我显示它停止的那一行,并可能允许我逐步执行该程序,然后。
我试过了:
pdb usr/local/bin/my_program.py
Run Code Online (Sandbox Code Playgroud)
然后:
(Pdb) cont
Run Code Online (Sandbox Code Playgroud)
但是当挂起时我该怎么做呢?它不会引发异常,就像它在等待某些东西一样,可能处于无限循环中。
更详细一点:当程序挂起时,我按^ C键,然后(不确定是否有必要),该程序正常运行(不引发任何异常,并且在屏幕上没有提示我为什么停止)。
这对您可能有用。 我通常会
>>> import pdb
>>> import program2debug
>>> pdb.run('program2debug.test()')
Run Code Online (Sandbox Code Playgroud)
我通常会在-v程序中添加一个选项,从而启用大量的打印语句来详细说明我在做什么。将来编写程序时,请考虑先做同样的事情,然后再增加数千行。
| 归档时间: |
|
| 查看次数: |
2725 次 |
| 最近记录: |