这是我时不时遇到的情况:
对于不使用虚拟寻址的嵌入式系统,我有一个从 C 或 C++ 代码编译的可执行文件,其中包含调试信息。它通常采用 COFF 或 ELF/DWARF(我把这两种混淆)格式。
在运行时,在 PC 上,我想确定给定名称的变量的地址。(例如“foo.bar[7].baz”)这允许我在嵌入式系统上读/写变量的值(给定一个超出此问题范围的调试协议)。显然,任何基于堆栈或基于堆的变量都不存在,因为它们没有静态地址。
我之前已经在 C++ 中完成了这项工作,以从 TI 的编译器为他们的 2800 系列 DSP 解析 COFF 文件,这有点痛苦。我想知道那里是否已经有一个 Java 库可以做这种事情,因为我面临着同样的事情与一个或两个其他处理器的可执行文件。
更新:(2009 年 11 月 18 日)一个有希望的线索!
有没有人使用过 Eclipse CDT ELF 解析器?
(参见http://help.eclipse.org/help33/index.jsp?topic=/org.eclipse.cdt.doc.isv/reference/api/org/eclipse/cdt/core/model/IBinary.html之一javadoc pgs 的)
TI 的 Code Composer 4(基于 Eclipse)似乎使用了这个,所以如果我能弄清楚文档在哪里,也许我可以用它来解决我的问题。