繁体   English   中英

LLVM和矮调试信息

[英]LLVM and dwarf debugging information

我正在尝试在LLVM优化期间保留DWARF调试信息,我的问题是:我可以以某种方式为LLVM中的每条指令插入调试信息吗? LLVM在进行所有优化遍历时是否会保留这些信息,然后将DWARF注释的LLVM优化IR丢给我?

我相信,如果这行得通,我可以让后端(当然支持那些调试信息)生成最终的最终代码,该代码可以(由于优化而或多或少地)可以用源代码进行调试,对吗?

对于llvm而言,优化的调试信息仍然是一个相当新的领域。 它正在积极开发中,但是很多取决于您要寻找的东西。 精确的变量跟踪实际上并不存在,因为它会进行转换-变量信息有时会丢失。 目前,SROA通行证特别糟糕。

就是说,如果您要查找行信息和类型信息,应该没问题。 争论应该相当不错,这样您不会因过关而被过多“优化”。

至于如何注释您的源代码,最简单的方法是查看clang发出的IR和调试元数据。 确保使用DIBuilder类来处理大多数事情,并注意将位置附加到IR级别指令的方式。 大部分代码在clang / lib / CodeGen / CGDebugInfo.cpp中。

希望这对您有所帮助,请随时在llvm-dev或cfe-dev邮件列表中询问。

LLVM 已经在IR中支持类似矮人的注释,这些注释在编译时会作为二进制文件中的矮人节生成。 尽管并非总是保证,但所有优化都会尝试保留此信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM