2015-02-11 81 views
0

我在我的應用程序中使用CocoaLumberjack(https://github.com/CocoaLumberjack/CocoaLumberjack)。XCode中宏的符號斷點

它有一對夫婦,我使用的例如不同的日誌宏:
DDLogInfo
DDLogVerbose
DDLogWarn
DDLogError

這些被定義爲宏。我想創建一個將在所有DDLogError中斷的符號斷點。我怎麼做?

+0

簡單:您可以在代碼中爲每個DDLogError實例設置斷點。或者用一個呼叫代替宏(可能是暫時的)。 – 2015-02-11 12:46:34

+1

(這是你在開始進入Objective-C之前應該知道的標準C宏指令。) – 2015-02-11 12:47:24

回答

2

總之,你沒有。宏是預編譯器指令。當你的程序被編譯並運行時,宏就消失了。

符號斷點在特定實例方法和函數調用中斷開。

您可以做的最好的方法是創建一個虛擬方法並編輯DDLogError宏的定義來調用該方法。然後你可以在該方法上設置一個斷點(符號或實際)。

+0

謝謝,我想我現在對那個版本運氣不好。除非我按照你的建議去做。 – Petar 2015-02-11 13:49:36

1

lldb有一個「源正則表達式斷點」,可能有助於此。它會搜索源文件的文本中的某種模式,如果模式匹配,則在該源代碼行上設置斷點。你說:

(lldb) break set -p "DDLog" 

這是不是你的方便,也許,因爲不帶參數,它只是看起來當前的源文件中,你可以指定一個像任意數量的文件:

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

但目前沒有辦法說「所有源文件」,因此您可能會厭倦輸入所有文件。但是,如果您只需要在幾個文件中設置這些宏斷點,這可能會派上用場。