linux - 核心转储文件格式

标签 linux gdb kernel

我为一个项目编写了自定义核心转储处理应用程序。我已更改 '/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/

相关文章:

linux - Ubuntu 中的 *.tiff 中的 f 给出带有扩展名的文件名

linux - QProcess 传递(shell)参数

c++ - 段错误调用函数

windows - 如何从内部卸载 Windows 内核模式驱动程序?

linux - 系统调用 : difference between sys_exit(), SYS_exit 和 exit()

linux - 如何使用通配符名称创建子目录,Linux

linux - 为什么在 Linux 中使用 ./file2 后得到 'permission denied'?

c++ - 在 gdb 中显示参数包的值

c++ - 如何在 gdb 中为函数的所有调用设置断点?

当我们在结构中有一个指针时使用container_of宏