如何通过gdb获取python eventlet堆栈
我有一个python程序。它有许多eventlet合作项目。 看来这个程序总有一天会死锁的。我已经抛弃了它的记忆。 我想找到理由问题是如何使用gdb获取eventlet协程堆栈。 其他信息:如何通过gdb获取python eventlet堆栈,python,gdb,coroutine,eventlet,Python,Gdb,Coroutine,Eventlet,我有一个python程序。它有许多eventlet合作项目。 看来这个程序总有一天会死锁的。我已经抛弃了它的记忆。 我想找到理由问题是如何使用gdb获取eventlet协程堆栈。 其他信息: 我知道如何通过gdb获得所有线程堆栈。但到了eventlet合作项目,它变得很困难。因为我没有足够的关于python解释器的信息 我还知道如何通过迭代所有对象来获取python程序中的所有eventlet协程堆栈。但在这种情况下,我们应该通过gdb检查所有对象,这是无用的 对于常规线程,没有简单的方法 以下
对于常规线程,没有简单的方法 以下是一些帮助您的提示:
- 关于使用GDB调试Python的多个有用的课程
- 使用
设置紧急进程内解释器进行调试eventlet.backdoor
- 搜索
gc.get_objects()
- 设置信号处理程序(例如USR1),该处理程序迭代所有绿色线程并将其堆栈打印到stderr