gpt4 book ai didi

linux - GDB 在事后分析中显示了错误的线程

转载 作者:IT王子 更新时间:2023-10-29 01:24:55 25 4
gpt4 key购买 nike

我遇到了 GDB 的奇怪行为。当运行内核的事后分析时,从 c++ 中的高度多线程应用程序转储,调试器命令

bt
where
thread info

永远不要告诉我程序实际崩溃的线程。它一直向我显示线程号 1。因为我习惯于在其他系统上看到它,所以我很好奇这是否是 GDB 中的错误,或者它们是否以某种方式改变了行为。谁能指出我的解决方案,搜索 75 个线程是 PITA,只是为了找出调试器已经知道的东西。

顺便说一句,我在 Debian Squeeze (6.0.1) 上,GDB 的版本是 7.0.1-debian,系统是 x86,完全是 32 位的。在我较旧的 Debian (5.x) 安装中,调试一个由完全相同的源转储的核心,为我提供了正确线程的回溯,就像在 Ubuntu 10.04 安装上的 GDB 一样。

谢谢!

最佳答案

GDB 不知道哪个线程导致了崩溃,只显示了它在 core 中看到的第一个线程。

Linux 内核通常首先转储故障线程,这就是为什么在大多数系统上,一旦将 core 加载到 GDB 中,您最终会进入正确的线程。

我从未见过内核出现问题,但我也从未使用过 Debian 6。

我的猜测是它出了问题,然后得到了修复,而 Debian 6 附带了一个损坏的内核。

您可以尝试升级您的 Debian 6 机器上的内核以匹配例如你的 Ubuntu 10.04,看看问题是否消失。

或者,Google 用户空间 coredumper做对了。您可以链接它,并从 SIGSEGV 处理程序中调用它。

关于linux - GDB 在事后分析中显示了错误的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6062277/

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