11

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

4

4 回答 4

18

Xcode 6中:

第 1 步
在左侧的导航器中,转到断点导航器(command ⌘</kbd> + 7):

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

步骤 1 和 2 的屏幕截图

第 3 步
符号中,键入NSLog

步骤 3 的屏幕截图

或者,您可以在DebugBreakpointsCreate Symbolic Breakpoint中执行相同的操作。

对于 Xcode 5,请参阅

于 2014-01-04T07:44:59.470 回答
13

如果您想中断某个日志消息,您可以使用:

在此处输入图像描述

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

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

于 2016-01-26T11:31:10.623 回答
4

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

于 2013-06-21T18:12:20.657 回答
2

据此,您可以通过在 lldb 控制台中设置这种断点

breakpoint set --name NSLog

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

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

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

于 2013-06-21T17:12:02.717 回答