XCode中宏的符号断点

时间:2015-02-11 11:11:38

标签: ios objective-c xcode debugging lldb

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

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

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

2 个答案:

答案 0 :(得分:2)

简而言之,你没有。宏是预编译器指令。当程序编译并运行时,宏就不见了。

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

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

答案 1 :(得分:1)

lldb有一个“源正则表达式断点”,可能有助于此。它将在源文件的文本中搜索某些模式,如果模式匹配,则在该源代码行上设置断点。你说:

(lldb) break set -p "DDLog"

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

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

但目前无法说出“所有源文件”,因此您可能会厌倦输入所有文件。但如果您只需要在几个文件中设置这些宏断点,这可能会派上用场。