我为一个项目编写了自定义核心转储处理应用程序。我已更改 '/proc/sys/kernel/core_pattern' 以调用我的转储处理程序并成功调用它。
现在的问题是将核心转储保存到 gdb 可以识别的文件中。目前我的转储处理程序从 STDIN 读取转储并将其保存到文件“core.dump”中。当我尝试将此核心转储加载到 gdb 时,出现错误:
(gdb) ... 不是核心转储:无法识别文件格式
当我在标准核心转储上运行"file"命令时,它会给我以下信息:
核心:ELF 64 位 LSB 核心文件 x86-64,版本 1 (SYSV),SVR4 样式,来自“./dump_gen”
对于自定义生成的转储,"file"给出以下内容:
core.dump: 数据
请谁能帮助我如何正确编写核心转储以便它可以在 gdb 中使用。
PS:我不想使用标准的核心转储文件。
最佳答案
我认为您以某种方式没有将所有数据写入核心文件。
创建一个简单的脚本,使其可执行并将核心模式设置为脚本。
#!/bin/sh
cat > /tmp/core.$$
现在生成一个核心文件(例如运行 sleep 1243
并按 ctrl+\
)它应该可以工作。
我自己在自己的系统上测试过,没有问题。
关于linux - 核心转储文件格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6602176/