我有程序,其结构定义如下:
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/