簡體   English   中英

Xcode調試器:按照給定的代碼行在代碼中的任意位置中斷

[英]Xcode debugger: Break anywhere in my code following a given line of code

我有給定的代碼行,此后我自己的代碼行都不應執行(不在同一“事件循環”中)。

如何配置Xcode調試器以捕獲在某些給定的代碼行之后確實執行了我自己的某些代碼的實例?

如果無法通過“事件循環”進行過濾,是否可以將其過濾為“在2秒后”?

如果您想對此感到困惑, 可以依靠知道在事件循環結束時耗盡了自動釋放池,並創建一個覆蓋-retain和-release以及何時保留計數的類(我會建議將一個ivar的值設為零,設置一個標志,將保留計數再次提高為一,並以某種方式在要為新事件循環創建的下一個自動釋放池中獲取它。 在每種方法的開頭,您要確保僅在代碼的某些行之前發生,請檢查是否在覆蓋-retain / release的類中引發了該標志,如果不是,則中斷/引發錯誤/ log / etc。 (一個宏可能會縮短代碼,您可以有條件地為調試版本定義它。)然后,在要確保沒有任何代碼出現的那一行之后,立即重置標志。 這樣,在此行之后輸入的任何代碼都將看到未設置標志,並對其進行日志/失敗/告訴您,並且在每個事件循環之后該標志都會重置。

其他一些事情:您應該定義+ retain / + release並使用+ [NSAutoreleasePool addObject:]將類對象添加到自動釋放池中,或者使其成為一個單例對象,這是因為必須真正訪問該標志而不希望這樣做傳遞這個對象。 第二,我似乎忽略了在耗盡該類之后如何將類/單例插入到下一個循環的自動釋放池中。 這是因為這是最難的部分,我沒有真正的想法,但是我有感覺 [self performSelector:@selector(autorelease) afterDelay:0]可以工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM