有没有办法将调试器附加到多线程 Python 进程?

新手上路,请多包涵

我正在尝试在锁定后调试多线程 Python 应用程序中的死锁。有没有办法附加调试器来检查进程的状态?

编辑:我正在 Linux 上尝试这个,但如果有一个跨平台的解决方案那就太好了。毕竟是 Python :)

原文由 readonly 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 414
2 个回答

是的,gdb 适合较低级别的调试。

您可以使用 thread 命令更改线程。

例如

(gdb) thr 2
[Switching to thread 2 (process 6159 thread 0x3f1b)]
(gdb) backtrace
....

您还可以查看特定于 Python 的调试器,例如 Winpdbpydb 。两个平台独立。

原文由 asksol 发布,翻译遵循 CC BY-SA 2.5 许可协议

使用 Winpdb 。它是一个 独立于平台 的图形化 GPL Python 调试器,支持通过网络进行远程调试、多线程、命名空间修改、嵌入式调试、加密通信,并且比 pdb 快 20 倍。

特征:

  • GPL 许可证。 Winpdb 是自由软件。
  • 兼容 CPython 2.3 到 2.6 和 Python 3000
  • 与 wxPython 2.6 到 2.8 兼容
  • 独立于平台,并在 Ubuntu Gutsy 和 Windows XP 上进行了测试。
  • 用户界面:rpdb2 是基于控制台的,而 winpdb 需要 wxPython 2.6 或更高版本。

截屏

(来源: winpdb.org

原文由 nosklo 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题