gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 06:40:16 24 4
gpt4 key购买 nike

我正在使用 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 增加。

威胁来来去去太快,无法使用我点击状态->线程的窗口显示。你能告诉我如何获取有关该线程的信息吗?

你知道为什么这个 LWP 一直在增加吗?
更重要的是如何获得进入该线程的函数?

谢谢你们
AFG

最佳答案

LWP是首字母缩写词,代表轻量级工艺。它实际上是每个新产生的线程的线程 ID。

关于如何处理那些生成和死亡的线程:您可以尝试在 clone 设置断点,这是他的系统调用(?我说得对吗?)它在给定的函数上启动一个新线程。

注意:当在clone处突破时您知道线程将从哪里开始,但实际上没有线程,然后您可以在作为参数给出的函数处设置断点 clone ...

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

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

关于multithreading - 获取有关 gdb/ddd 中线程的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4691031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com