Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过gdb获取python eventlet堆栈_Python_Gdb_Coroutine_Eventlet - Fatal编程技术网

如何通过gdb获取python eventlet堆栈

如何通过gdb获取python eventlet堆栈,python,gdb,coroutine,eventlet,Python,Gdb,Coroutine,Eventlet,我有一个python程序。它有许多eventlet合作项目。 看来这个程序总有一天会死锁的。我已经抛弃了它的记忆。 我想找到理由问题是如何使用gdb获取eventlet协程堆栈。 其他信息: 我知道如何通过gdb获得所有线程堆栈。但到了eventlet合作项目,它变得很困难。因为我没有足够的关于python解释器的信息 我还知道如何通过迭代所有对象来获取python程序中的所有eventlet协程堆栈。但在这种情况下,我们应该通过gdb检查所有对象,这是无用的 对于常规线程,没有简单的方法 以下

我有一个python程序。它有许多eventlet合作项目。 看来这个程序总有一天会死锁的。我已经抛弃了它的记忆。 我想找到理由问题是如何使用gdb获取eventlet协程堆栈。

其他信息:

  • 我知道如何通过gdb获得所有线程堆栈。但到了eventlet合作项目,它变得很困难。因为我没有足够的关于python解释器的信息
  • 我还知道如何通过迭代所有对象来获取python程序中的所有eventlet协程堆栈。但在这种情况下,我们应该通过gdb检查所有对象,这是无用的

  • 对于常规线程,没有简单的方法

    以下是一些帮助您的提示:

    • 关于使用GDB调试Python的多个有用的课程
    • 使用
      eventlet.backdoor
      设置紧急进程内解释器进行调试
    • 搜索
      gc.get_objects()
    • 设置信号处理程序(例如USR1),该处理程序迭代所有绿色线程并将其堆栈打印到stderr