首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心转储与gdb堆栈跟踪不同步

核心转储与gdb堆栈跟踪不同步
EN

Stack Overflow用户
提问于 2010-09-06 10:40:13
回答 1查看 2.4K关注 0票数 3

我有一个程序因为分割错误而崩溃。生成核心文件。

在gdb中运行核心给我提供了以下内容:

HPGDB6.1用于HP (32位或64位)和目标HP-UX11iv2和11iv3。

核心由‘gcpf1fwcApp’生成。

程序以信号6终止,中止。

我用了命令

线程应用所有bt

当我检查堆栈跟踪时,会得到主线程中的错误,该线程处于等待状态。

但是,当我在GDB中运行相同的程序时,堆栈跟踪中会出现一个完全不同的错误。这似乎比核心转储更正确。

该程序有31个线程。

为什么我会有这样的区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-07 03:05:03

很可能你只是看错了线程。

试试thread apply all where,看看其中一个线程是否实际上是abort()正在运行。

在调试活动进程时,GDB将在线程接收到SIGABRT时停止,因此很可能会显示相关线程。

在调试内核时(死后),GDB不知道哪个线程是相关的,因此以操作系统将它们保存到内核的顺序显示给您。Linux内核保存导致进程先死的线程,因此Linux上的GDB从内核显示相关线程。我猜HP-UX不会这么做,所以GDB会向您展示一个“随机”线程。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3650812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档