這一天我想出了一個大型軟件。在Visual Studio中調試程序的最佳方式是什麼?
我在Visual Studio調試2008年
我採取的步驟是:
使用調用堆棧窗口中找到我我認爲它可能有錯誤的代碼塊。
使用立即窗口調用一些本地函數來查看該塊中的數據結構 是否正確。
當我在步驟2中得到結果時,必須再次使用callstack去第1步找到bug 的來源。
在Visual Studio中調試大型或小型程序的最佳方法是什麼?
我不覺得整個程序運行和看所有相關的數據結構是 好的調試方式。
這一天我想出了一個大型軟件。在Visual Studio中調試程序的最佳方式是什麼?
我在Visual Studio調試2008年
我採取的步驟是:
使用調用堆棧窗口中找到我我認爲它可能有錯誤的代碼塊。
使用立即窗口調用一些本地函數來查看該塊中的數據結構 是否正確。
當我在步驟2中得到結果時,必須再次使用callstack去第1步找到bug 的來源。
在Visual Studio中調試大型或小型程序的最佳方法是什麼?
我不覺得整個程序運行和看所有相關的數據結構是 好的調試方式。
我在VS200x調試中的一個AHA-moments意識到我可以使用「附加到進程...」來啓動調試已經運行的可執行文件。對於大型解決方案而言,以「正常」方式啓動應用程序然後將Visual Studio附加到該應用程序通常比使用F5啓動調試會話的速度快得多。
把斷點放入可疑的方法和使用立即窗口是我的方式。我是即時窗口的巨大粉絲。
另外條件斷點是我喜歡的另一種方式。特別是當我迭代一個集合來查找可疑的對象時。我把條件放到斷點處,然後按F5來獲取它。
按Ctrl + Alt + Q組合是另一個很好的快捷方式快速監視窗口分析的對象。
我更喜歡使用立即窗口進行單元測試,主要是因爲這意味着我可以非常簡單地(並且實際上是從構建腳本)反覆運行代碼。
如果您使用立即窗口發現問題,並且無需添加任何測試就可以解決問題,但如果同一問題再次出現,則沒有任何警告。通過單元測試,您有一個不變的夥伴,以確保未來的更改不會重新引入該錯誤。
個人而言,我不喜歡不得不單步執行代碼 - 與單元測試相比,我覺得很沮喪。意外地跨過你想要插入的東西太容易了。有時候這是必要的,但這往往表明你的代碼太複雜了。 I 特別是不喜歡必須調試整個應用程序,而不是僅僅調試調試器中的單元測試。它通常要慢幾個數量級。
我最喜歡的方式,當被介紹給一個大的應用程序:
- 總是:「閱讀所有代碼」端到端(這是最有趣的)
- 書籤中央的部分代碼。
- 在調試
要查找破壞變量的值的代碼重構&寫測試我創建該變量數據斷點。每當變量的數據發生變化時,程序都會中斷執行,不管是通過正確的代碼,還是通過一個流浪的指針。
在我看來,關於調試的重要一點是形成一個有關錯誤發生的理論。換句話說,試着在啓動調試器之前查看代碼並思考問題。
我問了一個similar question,所以你可能也想檢查一下這個答案。