2011-10-15 65 views
3

好,我沒有要求設置斷點,只有得到「命中」時的方法是(或不是)由特定的對象和/或選擇器的XCode /目標C條件斷點

稱爲我能想到的最簡單的方法是,如果有一些編譯器宏(如_cmd)展開堆棧並返回當前方法的直接調用方的ID和選擇器。

例如,假設majical宏被_cmd_caller_id & _cmd_caller_sel) -

if ((_cmd_caller_id == self) && (_cmd_caller_sel != @selector(some_method:signature:)) { 
    NSLog(@"called by %@ - hitting breakpoint",NSStringFromSelector(_cmd_caller_sel)); 
} 

(你會放一個破發點上包含的NSLog(行...););

原因是我有一個被稱爲很多次的方法,我需要能夠設置一個比我上面描述的更復雜的條件集來設置陷阱來確定什麼方法調用違規方法什麼時候。

回答

3

主叫站點設置斷點,與斷點的條件(例如自==等等)

+0

是啊,我已經解決了這個問題的另一種方式(向後工作)。但是,在某些情況下,您無法獲得致電網站的來源 - 我試圖追蹤虛假留存來自何處。能夠放鬆堆疊會很好,但我想那是另一天。 – unsynchronized

+0

如果你想知道額外的保留來自哪裏,使用儀器,而不是GDB。 – NSResponder

+0

通常我會同意你,但是我正在研究需要實時分析的東西。即儀器的性能受到影響是不可接受的。 (即,在回放之前,我正在進行大量的實時音頻採樣的數字處理) – unsynchronized