首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LLVM和dwarf调试信息

LLVM和dwarf调试信息
EN

Stack Overflow用户
提问于 2014-04-03 18:20:15
回答 2查看 1.9K关注 0票数 2

在LLVM优化期间,我试图保留DWARF调试信息,我的问题是:我可以以某种方式为LLVM中的每条指令插入调试信息吗?LLVM是否会在执行所有优化过程时保留这些信息,然后转储给我一个带有DWARF注释的LLVM优化IR?

我相信如果这样做有效的话,我可以让一个后端(当然支持这些调试信息)生成最终的最终代码,这些代码(或多或少由于优化)可以用源代码进行调试,我说的对吗?

EN

回答 2

Stack Overflow用户

发布于 2014-04-04 10:53:30

优化的调试信息对于llvm来说仍然是一个非常新的领域。它正在积极开发中,但这在很大程度上取决于您正在寻找的是什么。精确的变量跟踪并不是真正存在的,因为它经历了转换-变量信息有时会丢失。SROA的通行证目前特别糟糕。

也就是说,如果您正在查找行信息和类型信息,则应该没问题。参数应该相当好,这样你就不会有太多的参数被传递“优化”了。

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

希望这对您有所帮助,如果您有任何问题,可以在llvm-dev或cfe dev邮件列表上询问。

票数 5
EN

Stack Overflow用户

发布于 2014-04-03 19:03:10

LLVM already supports dwarf-like annotations in the IR,在编译时,会在二进制文件中生成dwarf部分。所有的优化都试图保留这些信息,尽管并不总是有保证的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22834645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档