我的目标是:
第一个问题很好,第二个问题是关于这个问题的。在较高的级别上,如何枚举给定堆栈条目的局部变量?
在较低的层次上,这是我一直在调查的:
RTTI:没有列出关于方法的这类信息。这并不是我真正认为是一个现实的选择,但不管怎样,在这里列出。
调试信息:加载为调试构建生成的调试信息。
中包含全局和局部符号
我在这里遇到的问题是:
如果这是正确的方法,那么这个问题就变成了‘有没有TDS/TD32文件格式的文档,有没有加载局部变量的代码样本?’
代码样本不是必需的,但可能非常有用,即使它非常小。
发布于 2015-11-04 09:51:51
检查是否有调试符号不是二进制的。也可以使用GDB (在Windows上是GDB的一个端口)。如果您找到一个.dbg或.dSYM文件,那就太好了。它们包含源代码,例如。
gdb> list foo
56 void foo()
57 {
58 bar();
59 sighandler_t fnc = signal(SIGHUP, SIG_IGN);
60 raise(SIGHUP);
61 signal(SIGHUP, fnc);
62 baz(fnc);
63 }
如果您没有任何调试文件,您可以尝试获取MinGW或Cygwin,并使用nm(1) (man page)。它将从二进制文件中读取符号名称。它们可能包含一些类型,如C++类型:
int abc::def::Ghi::jkl(const std::string, int, const void*)
别忘了添加--demangle
选项,否则你会得到类似这样的结果:
__ZN11MRasterFont21getRasterForCharacterEh
而不是:
MRasterFont::getRasterForCharacter(unsigned char)
发布于 2020-01-23 23:22:00
看一看http://download.xskernel.org/docs/file%20formats/omf/borland.txt开放架构手册。它是旧的,但也许你可以找到一些关于文件格式的相关信息。
https://stackoverflow.com/questions/29990745
复制相似问题