Multithreading 获取有关gdb/ddd中线程的信息
我正在使用Multithreading 获取有关gdb/ddd中线程的信息,multithreading,debugging,gdb,ddd-debugger,Multithreading,Debugging,Gdb,Ddd Debugger,我正在使用ddd调试多线程应用程序 同时,我可以在DDD控制台上看到每一秒都创建了一个新线程 [NewThread 0x455fc940 (LWP 27373)] 然后马上就被摧毁了 [Thread 0x455fc940 (LWP 27373) exited] 几分钟后,我把这篇课文发了出来 [NewThread 0x455fc940 (LWP 27363)] [Thread 0x455fc940 (LWP 27363) exited] [NewThread 0x455fc94
ddd
调试多线程应用程序
同时,我可以在DDD控制台上看到每一秒都创建了一个新线程
[NewThread 0x455fc940 (LWP 27373)]
然后马上就被摧毁了
[Thread 0x455fc940 (LWP 27373) exited]
几分钟后,我把这篇课文发了出来
[NewThread 0x455fc940 (LWP 27363)]
[Thread 0x455fc940 (LWP 27363) exited]
[NewThread 0x455fc940 (LWP 27367)]
[Thread 0x455fc940 (LWP 27367) exited]
[NewThread 0x455fc940 (LWP 27373)]
[Thread 0x455fc940 (LWP 27373) exited]
...and so on..
随着LWP的增加
threas来的和去的太快了,无法使用我点击Status->Thread得到的窗口来显示。你能告诉我一点关于如何获取该线程的信息吗
你知道为什么LWP一直在增加吗?
更重要的是,如何获取该线程中的函数
谢谢大家
AFG
LWP
是首字母缩略词,代表轻质工艺。它实际上是每个新生成线程的线程ID
关于如何处理这些繁殖和死亡线程:您可以尝试在克隆
处设置断点,这就是系统调用(?我是否正确?),它在给定函数处启动一个新线程
注意:在clone
中断时,您知道线程将从何处开始,但实际上没有线程,您可以在clone
的参数中设置中断点
也就是说,使用start
命令从gdb或ddd启动程序,该命令在程序入口点(即main
)设置临时断点,而不是在clone
设置断点,继续并查看发生了什么;)
更新:在
克隆
上设置断点对我很有用。。。至少在我的测试中。我应该补充一点,这是特定于linux的—实际上是pthread\u create
使用的。在pthread\u create设置断点
(gdb) break pthread_create
Breakpoint 1 at 0x20c49ba5cabf44
现在,当您运行它时,它将在下次调用创建线程时停止执行,您可以键入
where
查看调用方是谁。嘿!非常感谢你的解释。让我试试,我会给你回复的(我周末在家)!