获取有关gdb / ddd中线程的信息

Abr*_*ile 2 debugging multithreading gdb ddd-debugger

我正在使用调试一个多线程应用程序ddd

在每秒的同一时间,我可以在DDD 控制台上看到创建一个新线程

 [NewThread 0x455fc940 (LWP 27373)]
Run Code Online (Sandbox Code Playgroud)

并在此之后立即摧毁。

 [Thread 0x455fc940  (LWP 27373) exited]
Run Code Online (Sandbox Code Playgroud)

几分钟后,我把这段文字讲出来了

 [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..
Run Code Online (Sandbox Code Playgroud)

随着这个LWP的增加。

威胁来了又走得太快,以至于无法在我单击状态->线程的窗口中显示。您能否谈谈如何获取有关该线程的信息?

您知道为什么这个LWP一直在增加吗?更重要的是如何将午餐功能纳入该线程?

谢谢大家AFG

Mar*_*gen 6

LWP是首字母缩写,代表“轻量化过程”。实际上,这是每个新产生的线程的线程ID

关于那些产生和垂死的线程该怎么做:您可以尝试在处设置一个断点clone,这是他的系统调用(我正确吗?),它在给定的函数处启动一个新线程。

注意:在中断处,clone您知道从何处开始线程,但实际上没有线程,然后可以在作为参数给定的函数处设置断点clone

也就是说,使用以下start命令从gdb或ddd启动程序,该命令在程序入口点(即main)设置一个临时断点,而不是在处设置断点clone,继续查看发生了什么;)。

更新clone至少在我的测试中,设置断点对我有用。我应该补充一点,这是特定于Linux的-实际上是pthread_create使用的东西。