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
查看调用方是谁。

嘿!非常感谢你的解释。让我试试,我会给你回复的(我周末在家)!