运行时调试

时间:2010-03-30 10:04:48

标签: c++

我们最近下载,安装和编译了gcc-3.0.4代码。 gcc编译器已成功构建,我们在哪里可以编译一些相同的测试cpp文件。我想知道我们如何修改gcc源代码,以便我们添加额外的运行时调试语句,比如我的gcc编译的执行中的二进制文件应该在日志文件中打印下面的语句:

  

filename.cpp :: FunctionName#行号语句

或我可以通过这个定制的编译器代码插入的任何其他信息。

2 个答案:

答案 0 :(得分:2)

您是否查看了宏__FILE____LINE__?他们为您做到这一点而无需修改编译器。有关详细信息,请参阅here

我对GCC架构的一般理解是,它分为前端(解析器),中间(特殊中间语言中的优化)和后端(生成平台相关输出)。因此,出于您的目的,您必须查看后端部分。

答案 1 :(得分:0)

不要使用像GCC 3.0这样的古老编译器。

最近GCC 4.9(2014年底或2015年1月)您可以自定义编译器,例如使用MELT扩展名,可在Gimple上添加新的优化传递。该传递将在每个Gimple调用语句之前插入一个Gimple语句(希望调用一些调试打印)。

这是一项非常重要的工作(也许是数周的工作)。你需要了解所有的Gimple