2014-08-28 59 views
3

最近我們已經開始在我們的引擎中遇到無限循環,我不知道如何有效地對抗它們。該應用程序簡單地凍結永恆,我無法阻止它的執行,以瞭解發生了什麼。在主要位置放置正常斷點(更新循環)什麼也不做。我幾乎可以肯定,問題出現在一個持續運行的循環中,但由於代碼的大小,我甚至無法開始猜測在哪裏尋找它。Visual Studio是否有「打破你的位置」的功能?

所以,我的問題是你如何打破應用程序在Visual Studio中的執行在代碼中的某個任意位置,那裏的應用恰好在那個時間?類似於「待在你身邊」的東西。這在理論上是可能的嗎?

+4

您是否嘗試了暫停按鈕?第二個按鈕在左邊,第二行在http://www.kipirvine.com/asm/debug/vstudio2010/S5.gif – sisve 2014-08-28 11:12:01

+0

噢,現在我很慚愧地問這個問題:)。但是,有一件事我真誠地閱讀了MSDN關於斷點的文章,並在詢問之前使用了google搜索。如果你想發佈這個作爲aswer我會接受它。 – cubrman 2014-08-28 11:30:37

回答

5

當然,使用Debug + Break All。

這當然不一定會破壞您的程序,而只會發生與您的程序中某個語句匹配的好地址。如果設置斷點沒有調用中斷,那很可能。您很可能會看到調試器發出的無法顯示源代碼的通知。或者就此而言,它可能沒有選擇正確的線程。

所以你要做的第一件事就是使用Debug + Windows + Threads並確保選擇了正確的線程。雙擊你想調試的那個。接下來你要做的就是查看Debug + WIndows + Call Stack窗口。它至少應該展示一些你的方法,給你一個提示它是如何結束在永遠不會有土地的。

它不是不可能在本地代碼或操作系統調用上死鎖。要看到這一點,您需要啓用非託管調試。項目+屬性,調試,勾選「啓用本地代碼調試」。並確保已啓用符號服務器,以便您可以獲取操作系統DLL的調試信息。工具+選項,調試,符號。