【发布时间】:2012-05-15 16:32:14
【问题描述】:
我有一个程序,它的结构定义如下:
struct foo {
int magic;
int bar;
};
当我创建这个结构的对象时,我总是做以下事情:
object.magic = 654321;
这个程序最终会随着核心转储而死。
是否有可能让 c++ 程序自动计数所有的 bar 值并例如求和?
PS。到目前为止,我已经调查过我不能简单地将核心作为二进制打开并搜索 654321 转换为十六进制(在十六进制编辑器中找不到)。 Wikipedia 说现代 unix 系统使用 ELF,但不幸的是我不了解所有标头系统,因为我是一个非常缺乏经验的程序员。
有没有办法在不学习整个标题结构的情况下获得这个栏?
【问题讨论】:
-
如果您输入幻数
0x654321,您可以在二进制文件中搜索字符串“eC!”或“!Ce”,取决于字节序。 -
确保对象在堆上。如果在堆栈上,编译器可能已经优化掉了这个值。还要检查您的核心文件的大小是否不受限制,也许它只是被截断了。