线程内核转储的GDB内核分析

线程内核转储的GDB内核分析,gdb,Gdb,出于某种原因,生成的核心文件只是作为主应用程序一部分的线程的核心 当我用实际崩溃的二进制文件加载它时,我得到 BFD: Warning: core is truncated: expected core file size >= 40919040, found: 61440. 我怎样才能告诉gdb这是来自该二进制文件的线程 出于某种原因,生成的核心文件只是作为主应用程序一部分的线程的核心 是什么让你得出这个结论的?这个结论很可能是错误的 BFD:警告:核心被截断:预期的核心文件大小>=4

出于某种原因,生成的核心文件只是作为主应用程序一部分的线程的核心

当我用实际崩溃的二进制文件加载它时,我得到

BFD: Warning: core is truncated: expected core file size >= 40919040, found: 61440.
我怎样才能告诉gdb这是来自该二进制文件的线程

出于某种原因,生成的核心文件只是作为主应用程序一部分的线程的核心

是什么让你得出这个结论的?这个结论很可能是错误的

BFD:警告:核心被截断:预期的核心文件大小>=40919040,找到的:61440

此消息的意思正是它所说的:您的
core
文件的大小应该是
40919040
字节,但不是

最可能的原因是:

  • 您将
    ulimit-c
    设置为15(过低)
  • 磁盘空间已用完
  • 您只复制了实际核心的一部分(例如,通过点击Control-C或在传输过程中断开网络连接)

在我的systemd文件中,LimitCORE=infinity,因此ulimit不低。写入此文件的磁盘上有700 MB可用空间。核心是完全复制的。然而,看起来像是一个非常小的线程堆栈负责核心。也许这就是只有一部分被丢弃的原因