如何将核心文件减少到仅线程堆栈?
我希望能够运行 gdbthread apply all bt
在迷你核心上,仅此而已
我正在处理大型 (>4GB) 多线程 Linux ELF 核心文件,这些文件太大而无法返回进行分析。
我见过谷歌断点器 http://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad这是为了在进程崩溃时创建“小型转储”。在谷歌断点器 http://code.google.com/p/google-breakpad/wiki/GettingStartedWithBreakpad有两个实用程序core2md
and minidump-2-core
乍一看应该能够将核心文件转换为小型转储格式,然后从小型转储返回核心文件,仅包含堆栈信息。问题是 core2md 需要 /proc/$PID/ 下的进程信息,而我没有这些信息。
也许你最好的选择是将 google breakpad 集成到你的 Linux 进程中,这样当发生崩溃时,它是 google Breakpad 记录崩溃而不是操作系统创建核心文件。这将为您提供所需的信息,然后您可以使用 minidump_stackwalk 转储调用堆栈(方便总结大量崩溃),也可以使用 minidump-2-core 创建核心文件。
不幸的是,Linux 似乎没有一种有效的方法来仅使用线程堆栈的内容创建最小的核心文件。这些文件(Windows 世界中的小型转储)非常有用——它们具有非常高的信息大小比,可以轻松收集数百万个故障转储。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)