我为项目编写了一个自定义核心转储处理应用程序.我已经更改了'/ proc/sys/kernel/core_pattern'来调用我的dump-handler并成功调用它.
现在问题是将核心转储保存到gdb可以识别的文件中.目前我的dump-handler从STDIN读取转储并将其保存到文件'core.dump'中.当我尝试将此核心转储加载到gdb时,它给出了错误:
(gdb) ... is not a core dump: File format not recognized
当我在标准核心转储上运行'file'命令时,它会给我以下信息:
core: ELF 64-bit LSB core file x86-64, version 1 (SYSV), SVR4-style, from './dump_gen'
对于自定义生成的转储,'file'给出以下内容:
core.dump: data
请任何人都可以帮我正确编写core-dump,这样它就可以在gdb中使用了.
PS:我不想使用标准的核心转储文件.
我认为您某种程度上不会将所有数据写入核心文件。
创建一个简单的脚本,使其可执行,并将核心模式设置为脚本。
#!/bin/sh
cat > /tmp/core.$$
Run Code Online (Sandbox Code Playgroud)
现在生成一个核心文件(例如,运行sleep 1243并按 ctrl+\),它应该可以工作。
我只是在我的系统上自己测试过,它可以正常工作。