4

我有一些由宏生成的方法。我可以在“预处理”伴侣中看到代码,它编译并运行良好。我可以逐步完成拆卸,但这并不好玩。对于写在一行上的多个语句,似乎也存在类似的问题。有什么解决办法吗?

4

1 回答 1

2

正如您所经历的那样,宏很难调试。

那是因为它们在编译开始之前(由预处理器)被扩展,所以当 clang/gcc/icc/whatever 看到你的代码,然后为它生成调试信息,包括行表,宏就没有留下任何痕迹.

这个问题不是 LLDB 特有的,更普遍地是由于 C/C++/ObjC 编译模型的性质,它带有一个预处理器,然后是一个单独的编译器,其中只有后者有助于生成调试信息,而只有前者看到宏。

于 2013-09-17T20:50:44.997 回答