c++ - 如何使用 c/c++ 在现代 Linux 核心转储中进行搜索?

标签 c++ c coredump

我有程序,其结构定义如下:

struct foo {
    int magic;
    int bar;
};

当我创建这个结构的对象时,我总是执行以下操作:

object.magic = 654321;

该程序最终将因生成核心转储而死亡。

是否可以制作一个 C++ 程序来自动计算所有找到的所有柱值并进行求和?

PS。到目前为止,我已经调查过,我不能简单地以二进制方式打开核心并搜索转换为十六进制的 654321 (在十六进制编辑器中找不到任何内容)。维基百科说现代unix系统使用ELF,但不幸的是我不理解所有的头文件系统,因为我是一个非常没有经验的程序员。

有没有办法在不学习整个标题结构的情况下获得这个栏?

最佳答案

so far I've investigated that I can not simply open core as binary and search for 654321 converted to hexadecimal (nothing found in hex editor).

我希望这会产生一些匹配。确保您获得 endianness就在您进行搜索时。

注意无论您使用什么方法来执行此操作,它都必然是一个近似值。您不能指望这样的搜索始终能够找到 foo 的所有实例,而不会找到其他任何内容(尤其是在发生导致进程崩溃的事件之后)。

关于c++ - 如何使用 c/c++ 在现代 Linux 核心转储中进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10605101/

相关文章:

c++ - 为什么栈尾为空?

linux - 查找导致核心转储文件的程序

c++ - imshow 不工作

c++ - native C++ 中的并行同步迭代任务

c - 在c中分配大型指针数组(9mb)

c - gdb 中 backtrace(backtrace_symbols) 和 bt 的区别

android - 我可以将 c++ 库包装到移动 IOS/Android 的 Adob​​e Air native 扩展吗

c++ - 如何使用静态库(windows phone 8)

c - 重读C中的结构

coredump - 哪个组件实际上转储核心?