【发布时间】:2013-09-17 20:04:28
【问题描述】:
我有一些由宏生成的方法。我可以在“预处理”伴侣中看到代码,它编译并运行良好。我可以逐步完成拆卸,但这并不好玩。对于写在一行上的多个语句,似乎也存在类似的问题。有什么解决办法吗?
【问题讨论】:
我有一些由宏生成的方法。我可以在“预处理”伴侣中看到代码,它编译并运行良好。我可以逐步完成拆卸,但这并不好玩。对于写在一行上的多个语句,似乎也存在类似的问题。有什么解决办法吗?
【问题讨论】:
正如您所经历的那样,宏很难调试。
那是因为它们在编译开始之前(由预处理器)被扩展,所以当 clang/gcc/icc/whatever 看到你的代码,然后为它生成调试信息,包括行表,没有留下任何痕迹宏。
这个问题不是 LLDB 特有的,更普遍的原因是 C/C++/ObjC 编译模型的性质,它带有一个预处理器,然后是一个单独的编译器,其中只有后者有助于生成调试信息,而只有前者看到宏。
【讨论】: