2013-09-25 29 views
1

這似乎有點倒退,但我在一個巨大的iOS應用程序,並試圖瞭解其中視覺界面元素(視圖,控制器)被調用到碼。大部分視圖都是動態構建的,因此不像進入Interface Builder並查看Target/Actions和IBOutlets一樣簡單。是否可以使用斷點來發現下一個代碼執行

一般來說,人們在代碼的時間提前設定他們預定位置,然後等待他們被擊中使用斷點。我想知道是否有可能以這種方式設置斷點(可能通過LLDB?),基本上說...「嘿,我不知道接下來會執行什麼,但無論如何是,打破那裏。

這將是對我非常有用搞清楚其中的觀點和控制輸入代碼。

+0

「下一步」是沒有意義的,應用程序不斷運行,即使屏幕上沒有任何事情發生。 – Kevin

回答

2

什麼bneely建議是讓是怎麼回事的整體情況的好方法。如果你想要一個簡單的方法來快速獲得一些代碼,並且瞭解一些涉及到的基類,你可以使用符號斷點。

例如,說我想要得到一些UIButton的事件回調的代碼。我可以添加下面的符號斷點:' - [NSObject performSelector:withObject:withObject:]'。 (是的兩個與Objects)。這可能會停止在一些彙編代碼。幸運的是,選擇器在一個寄存器中,所以用gdb:info寄存器或lldb寄存器讀取應該顯示選擇器。然後,這是一個cmd + shift + o(快速打開)的問題,粘貼到選擇器中,然後在(希望單個)結果上按回車,或從上下文中判斷。

另一個有用的一個可能是: 「 - [UIControl sendActionsForControlEvents:]」

此外,一個好辦法,找到UI代碼搜索項目的UI控件顯示文本。

如果一切都失敗了,希望貢獻者代碼庫遵循良好的命名規則和組織的文件很好。

編輯:

如果選擇起初不露面,而是你喜歡的東西「_controlTouchBegan:withEvent」,然後簡單地繼續下去,直到你打的相關選擇。

2

您可以使用Instruments應用程序。從Xcode中選擇產品>配置文件,然後在iOS模擬器> CPU選項下選擇時間配置文件。按配置文件按鈕。讓應用程序執行您想要分析的任何內容,然後按下「工具」窗口左上方的「停止」按鈕。您將看到呼叫樹的摺疊視圖,您可以展開該視圖(提示:選擇並單擊顯示三角形以一次展開所有符號的後代),然後瀏覽以遵循執行路徑。

+0

奇妙的建議。不幸的是,我仍然太「聲譽」窮人投票這個答案。非常感謝。 – user2655474

相關問題