2013-07-25 318 views
2

我習慣於使用Visual Studio的調試器,它將實質上跟蹤通過應用程序的邏輯路徑,從方法跳轉到方法,以便您查看某些事情可能無法正常工作。Xcode調試器 - 通過方法調試

當我在Xcode(4.6.3)中使用'Step into'或'step over'作爲需要進行調試時,我會經歷一些方法,但它似乎跳轉到編譯代碼中,我迷路了。我看不到由此導致的邏輯流程或事件順序,所以我做錯了什麼?

如何跟蹤代碼中實際正在執行的操作,但方式有意義且不會顯示編譯代碼?

例如,我在ViewDidLoad上放置了一個斷點,因爲我想看看在調用該方法後會發生什麼,因爲我的應用程序沒有按預期工作。其他地方的折點沒有被擊中,所以有一個問題需要追蹤。

所以我的ViewDidLoad斷點被擊中,我按照我的方式通過該方法工作,然後當調試器命中方法結束時,它飛入編譯代碼,所以我不知道事件順序是什麼。

回答

0

我不認爲你可以避免這個問題,因爲它「飛走」的代碼可能沒有符號,無論如何你沒有源代碼。

這種情況並非Xcode所特有;它會在Visual Studio和其他所有操作系統中發生。

一種方法是提供視圖的所有子類的方法/不管什麼(即使他們所做的只是調用[super method]而已),並在它們的每一個上設置斷點。

或者,如果實例變量以意想不到的方式獲得重擊,請設置watchpoint

+1

我想我的意思是,在VS中我發現有一個邏輯流程。方法A調用方法B,然後調用方法C並顯示結果。所以當你在調試的時候,你可以用調試器來跟蹤這個流程。在Xcode中,我發現方法A運行,然後結束,我試圖看看接下來會發生什麼,但不能,但我知道的是。 –

+0

@FullTimeSkeleton嗯,我沒有看到Xcode如何以這種方式與VS不同;它可能是Cocoa(Touch)與Windows相比的本質,但基本上代碼的本質是相同的。 – trojanfoe

+0

我不知道,也許這只是我習慣編碼的方式(我在Xcode中調試別人的代碼)。在VS中,我通常知道我的Page_Load方法可能會調用填充中繼器等的方法。在這段代碼中,我知道有一個正在被填充的tableview,但是調試器沒有顯示我在哪裏。我想我會弄清楚。 –

0

我正面臨着完全相同的情況。但是,下面的兩個鏈接幫助我理解了爲什麼會發生。

基本上,你首先需要 「 UN-CHECK」 在調試 - > DEBUG工作流 - 選項> SHOW拆卸調試時

然後,如果您試圖調試自己的代碼,那麼調試的工作方式與Visual Studio中的相同。但是,如果您正在從某個Framework調用您正在查看的代碼,那麼無論「Show Disassembly」的設置如何,調試器都會返回到彙編代碼。

查看這些鏈接以獲取更多的信息。他們是來自同一頁面的答案。

XCode Debugger: Why is it only showing me assembler?
https://stackoverflow.com/a/1421275/2377928
https://stackoverflow.com/a/7301489/2377928

感謝,

希望這有助於!