XCode 中宏的符号断点

Symbolic breakpoint on Macro in XCode

我在我的应用程序中使用 CocoaLumberjack (https://github.com/CocoaLumberjack/CocoaLumberjack)。

它有几个不同的日志宏供我使用,例如:
DDLogInfo
DDLogVerbose
DDLogWarn
DDLogError

这些被定义为宏。我想创建一个符号断点,它将在所有 DDLogError 上中断。我该怎么做?

简而言之,你没有。宏是预编译器指令。当您的程序编译完成并且 运行 时,宏已经消失。

符号断点在特定实例方法和函数调用时中断。

您可能能做的最好的事情是创建一个虚拟方法并编辑 DDLogError 宏的定义以调用该方法。然后您可以在该方法上设置一个断点(符号的或实际的)。

lldb 有一个 "source regular expression breakpoint" 可能有助于解决这个问题。它将在源文件的文本中搜索某种模式,如果模式匹配,则在该源行上设置断点。你说:

(lldb) break set -p "DDLog"

这对您来说可能不太方便,因为没有参数,它只在当前源文件中查找,您可以指定任意数量的文件,例如:

(lldb) break set -p "DDLog" -f foo.c -f bar.c

但是目前没有办法说 "all source files" 所以你可能会厌倦输入所有文件。但是如果你只需要在几个文件中设置这些宏断点,这可能会派上用场。