1. 程式人生 > >VS除錯技巧資料

VS除錯技巧資料

人非聖賢,難免造bug,似我等愚人,bug會特別多(I am just a poor guy~)。與bug大軍們惡戰幾百回合後,終於,我發現,好的除錯技巧是解決掉bug的絕妙武器(難得開竅啊……)。總之,工欲善其事,必先利其器。

迴歸正題,下面整理一些VS的除錯技巧資料。

1. 熱心網友們關於watch, memory, output, breakpoint, call stack等的介紹
https://www.cnblogs.com/yangcaogui/p/3145031.html
https://www.cnblogs.com/wangsai/p/4113242.html
http://www.cnblogs.com/lazycoding/archive/2012/10/03/2710738.html

2. 常用快捷鍵
https://www.cnblogs.com/wangliu/p/3894176.html

3. 雜七雜八的除錯小心得(介面可參見上述網址)

(1)關於快捷鍵
快捷鍵是可以自行設定的,不過一個個設定實在是太麻煩了。幸好VS有預設的快捷鍵設定,可參照以下網址恢復VS的預設環境設定,根據自己的需要選擇設定集合,比如我就習慣了用Visual C++工具集合。
https://blog.csdn.net/bianjing40/article/details/77587834/ (中文版)
https://www.cnblogs.com/fanyf/p/3577009.html (英文版)

(2)關於Output視窗


編譯和重編譯(Build & Rebuild)的結果都在Output視窗顯示。通常會先看最後一行,succeed or failed,成敗都看它了。
0 failed 當然是最理想的結果啦,這說明程式碼至少在語法上沒有被檢查出錯誤,可以繼續debug看看資料結果有沒有問題。
如果顯示非零falied的話,也不用慌。在Output視窗向上翻頁找關鍵字error,雙擊該句錯誤說明就可跳轉到指定位置進行修改。感覺挺人性化的,有木有?假如它只告訴你有錯,卻傲嬌地不告訴你在哪裡,當代碼規模較大的時候,可就麻煩了。像我這樣的造bug專業戶,大概會棄療。。
Output視窗還會顯示很多的warning(警告),最理想的情況是No warning , 但是有warning也不會影響程式碼的執行,只是看著比較心煩,可參照以下網址遮蔽掉warning。不遮蔽的好處大概是可以檢驗自己的程式碼是不是足夠符合程式碼規範(我對這個不太瞭解,一向不怎麼關注)。
https://blog.csdn.net/duan19920101/article/details/51365299

https://zhidao.baidu.com/question/1308141233179371979.html
https://www.cnblogs.com/dongdonggege/p/4530967.html

(3)關於memory視窗
First, 到哪裡調出memory視窗呢?
除錯狀態下,找到工具欄的Debug -> Windows -> Memory,裡面有4個memory視窗任君選。
Second,memory視窗有啥用呢?
可以通過memory視窗檢視記憶體中的資料。當除錯物件涉及到陣列的時候,用起來比監視視窗(Watch)方便多了。另外,有時記憶體中資料的擺放順序對程式的正確性起著至關重要的作用,例如加解密演算法。

(4)關於watch視窗
監視視窗,想必大家都很熟悉了,也是在除錯狀態下可見。程式執行到斷點處時,可以用來檢視中間變數的值,還可以進行一些簡單的運算,加減乘除啥的。其顯示的數值可以是十進位制數,也可以是十六進位制數,在顯示數值一列單擊右鍵可進行切換。

(5)關於Call Stack視窗
堆疊視窗,除錯狀態下可見,看大型程式碼的時候非常有用。可以看到當前函式被逐級呼叫的情況,並跳轉到各級呼叫函式,有助於分析和掌握程式碼的結構。

(6)關於Breakpoints視窗
斷點視窗,除錯狀態下可見,上面會清楚地列出所有打了斷點的地方,方便管理和清除斷點。

未完待續……