2013-06-21 23 views
7

大代碼庫的某些部分正在打印出奇怪的NSLog語句,我試圖檢測它來自哪裏。是否有辦法在每個NSLog調用的開始處放置1個斷點,以便我可以看到它從哪裏調用,而不是手動在所有調用NSLog的地方放置斷點?有沒有辦法在任何NSLog語句的開始處設置斷點?

+0

去得到DLog,全局查找並替換所有的NSLog。 – Wain

+0

@Wain如果一些僅有二進制文件的庫(例如UIKit)正在調用'NSLog',那麼這將不起作用。 –

+0

我可能會用我自己的 - 覆蓋NSLog宏來調用斷點鉤子。 –

回答

2

根據this您可以通過在LLDB控制檯這樣設置類型的斷點:

breakpoint set --name NSLog 

的一種方式做到這一點使用Xcode的可能是把一個斷點在main功能或你AppDelegateapplicationDidFinishLaunchin(閱讀:儘快)。 然後,你運行你的應用程序,當它暫停在所述斷點,你可以訪問LLDB控制檯:鍵入上面一行並回車,並LLDB版畫是這樣的:

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

此時,您將恢復您的應用程序,並在調用NSLog時再次暫停(請注意使用調試導航器調用堆棧)。

4

在斷點導航器(命令 + )添加(在底部,有一個加號)的符號斷點,並使用作爲NSLog符號。

14

的Xcode 6

步驟1
在左側的導航,轉到斷點導航命令⌘ + ):

步驟2
點擊+按鈕,左下角(添加新的斷點),
然後選擇添加符號斷點...

screenshot for steps 1 and 2

步驟3
符號,類型NSLog

screenshot for step 3

或者,你可以做同樣的事情在調試斷點創建符號斷點

Fo Xcode 5,參見this

+0

這不適用於XCode 6.2:/ –

5

如果你想在某個日誌消息打破你可以使用:

enter image description here

這個例子將打破含有「警告」每個日誌。

+0

非常感謝。這幫助我解決了我的問題http://stackoverflow.com/questions/41281627/finding-the-origin-of-xcode-debug-message – mylogon

+0

保存重新輸入,這裏的字符串:'[( NSString *)$ r0 containsString:@「Warning」]' –

相關問題