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

Pop*_*orn 11 debugging xcode logging breakpoints objective-c

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

Pan*_*ang 16

Xcode 6中:

步骤1:
在左侧的导航器上,转到断点导航器(command ⌘+ 7):

第2步:
单击+左下角的按钮(添加新断点),
然后选择Add Symbolic Breakpoint ...:

步骤1和2的屏幕截图

第3步:
符号中键入NSLog.

第3步的屏幕截图

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

Fo Xcode 5,看到这个.


Yed*_*edy 11

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

在此输入图像描述

此示例将在包含单词"Warning"的每个日志中断开.

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


Ale*_*olo 2

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

breakpoint set --name NSLog
Run Code Online (Sandbox Code Playgroud)

使用 Xcode 执行此操作的一种方法是在函数中main或在您身上设置断点AppDelegate applicationDidFinishLaunchin(请阅读:尽快)。然后,运行应用程序,当它在所述断点处暂停时,您可以访问 lldb 控制台:输入上面的行并按回车键,lldb 会打印如下内容:

Breakpoint 3: where = Foundation`NSLog, address = 0x32a3da08
Run Code Online (Sandbox Code Playgroud)

此时,您恢复应用程序,并且在NSLog调用时它将再次暂停(请注意使用调试导航器的调用堆栈)。