有没有办法在任何NSLog语句的开头设置断点?

时间:2013-06-21 17:04:59

标签: objective-c xcode debugging logging breakpoints

大代码库的某些部分是打印出奇怪的NSLog语句,而我正在尝试检测它的来源。有没有办法在每个NSLog调用的开头放置1个断点,这样我就可以看到调用它的位置,而不是手动必须在所有调用NSLog的地方放置断点?

4 个答案:

答案 0 :(得分:16)

Xcode 6

第1步
在左侧的导航器上,转到断点导航命令⌘ + 7 ):

第2步
点击左下角的 + 按钮(添加新断点),
然后选择添加符号断点...

screenshot for steps 1 and 2

第3步
符号中,键入NSLog

screenshot for step 3

或者,您可以在调试断点创建符号断点中执行相同的操作。

Fo Xcode 5 ,请参阅this

答案 1 :(得分:10)

如果要打破某个日志消息,可以使用:

enter image description here

此示例将在包含“警告”一词的每个日志中断。

更新: 在较新的设备上使用$ x0。 模拟器和旧版使用$ r0。 $ arg0应该适用于所有情况。

答案 2 :(得分:4)

在断点导航器( command + 6 )中添加(在底部,有一个加号)符号断点并使用NSLog作为符号。

答案 3 :(得分:2)

根据this,您可以在lldb控制台中设置这种断点:

breakpoint set --name NSLog

使用Xcode执行此操作的一种方法可能是在main函数或AppDelegate applicationDidFinishLaunchin上放置断点(尽快阅读:)。 然后,你运行你的应用程序,当它在所述断点上暂停时,你可以访问lldb控制台:你键入上面的行并点击return,lldb打印出这样的东西:

Breakpoint 3: where = Foundation`NSLog, address = 0x32a3da08

此时,您恢复应用程序,并在调用NSLog时再次暂停(使用Debug Navigator注意调用堆栈)。