擅长:python、mysql、java
<p>从另一边完全接近它怎么样。您已经有了一个完全理解C类型系统的所有细微差别的解析器:编译器本身。因此,在完全调试支持下编译项目,并在调试数据中进行探索。在</p>
<p>对于基于<a href="http://www.gnu.org/software/binutils/" rel="nofollow noreferrer">binutils</a>支持的格式的系统,您需要的大部分细节都可以通过<a href="http://sourceware.org/binutils/docs/bfd/index.html" rel="nofollow noreferrer">BFD</a>库了解。在</p>
<p>微软的调试格式(在某种程度上)得到了MSDN上的库和文档的支持,但我的googlefu现在很弱,我不打算把我知道的文章放在这里链接。在</p>
<p>keil8051编译器(我在这里没有使用他们的ARM编译器)使用Intel OMF或OMF2格式,并说明调试符号是用于调试器或“任何与英特尔兼容的模拟器”的。keilc51使用的<a href="http://www.keil.com/support/docs/163.htm" rel="nofollow noreferrer">OMF</a>规范可以从<a href="http://www.keil.com/" rel="nofollow noreferrer">Keil</a>获得,所以我可以想象类似的规范也可以用于其他编译器。在</p>
<p>快速浏览Keil的网站似乎表明他们放弃了他们的专利ARM编译器,转而使用ARM的RealView编译器,后者似乎使用了带有DWARF格式调试信息的ELF对象。Dwarf应该得到BFD的支持,并且应该为您提供验证类型和名称匹配所需的所有信息。在</p>