12個高效的VS調試技巧

介紹程序員

調試是軟件開發週期中的一個很重要的部分,有時頗有挑戰性,有時候則讓程序員迷惑,有時候讓程序員發瘋,可是。能夠確定的是,對於任何不是太那個微不足道的程序來講,調試是不可避免的。近年來,調試工具的發展已經使得不少調試任務簡單省時了。多線程

 

本文總結了十個調試技巧,當你使用VS的時候能夠節省你不少時間。編輯器

1.懸停鼠標查看錶達式函數

調試有時候頗有挑戰性,當你步入一個函數想看看哪塊出錯的時候,查看調用棧來想一想值是從哪來的。另外一些狀況下,則須要添加一些監視表達式,或者查看局部變量列表,這一般仍是花費一些時間的,可是。若是你把你鼠標指向你感興趣的一個變量。你會發現事情簡單多了。並且,類和結構體能夠經過單擊展開。這樣。你就能夠方便快捷的找到你想查看的變量了。工具

 

2實時改變值優化

調試器不只僅是一個分析程序崩潰或是異常結果的工具了,許多bug均可以經過步入新寫的函數,檢查函數是否如指望的那樣運行來預防。有時候你可能會好奇「若是條件爲真函數會正確運行嗎」大多數狀況下,根本不須要改變代碼重啓挑起,僅僅把鼠標懸停到一個變量上,雙擊值而後輸入一個新值就能夠了。。插件

 

3.設置下一條語句線程

一個典型的調試狀況就是經過單步跟蹤分析爲何一個函數調用失敗了。當你發現一個函數調用的另外一個函數返回錯誤的時候你會怎麼作?重啓調試?有更好的方法。拖動這個黃色的語句標識到你想下一步執行的語句前就能夠了。好比你剛纔失敗的那塊,而後步入。簡單,不是嗎?翻譯

 

4.編輯而後繼續debug

調試一個複雜的程序,或是一個插件的時候,在一個被調用不少次的函數處發現一個錯誤。可是不想浪費時間停下來,從新編譯而後從新調試。沒問題,僅僅在該處改正代碼而後繼續單步就能夠。VS會修正程序而後繼續調試不須要重啓

 

注意,編輯而後繼續有大量的已知限制,首先,64位代碼是不行的。若是他若是爲你的C#程序工做。就去工程設置的生成選項,而後目標平臺爲x86.不要擔憂。發佈版的目標平臺和調試的時候是分開的。能夠被設置爲任何平臺。。

 

第二.編輯而後繼續改變在一個方法裏應該是局部的。。若是你改變了方法簽名,添加一些新方法或是類。你就不得不重啓程序了。或者撤銷改變來繼續。改變方法也包含lambda表達式隱式修改的自動生成的代理類,所以也不能繼續。

 

5.方便的監視窗口

大概現代的調試器都有一個監視窗口,不管如何。VS容許你簡單的添加或移除變量。單擊空行,輸入你的表達式按下回車,或者是在不須要的表達式上按下Delete鍵就能夠刪除了。

並且。從監視窗口你不只僅能夠看到「正常」的變量。你能夠輸入$handles 來追蹤你的程序打開了多少句柄(能夠方便的修復內存泄漏),輸入$err 能夠看到上一個函數的錯誤碼,而後使用工具-錯誤信息能夠看到更詳細的描述,或者輸入@eax(64位是@rax)來查看包含函數返回值的寄存器。

 

6.帶註釋的反彙編

使用交互式的反彙編模式可使得優化程序的關鍵部分變得很容易,VS給出對應你代碼每一行的彙編指令,而且運行單步運行。同時,能夠在任何位置設置斷點。並且,表達式的查看和修改也像在C++代碼裏同樣

 

7.帶有棧的線程窗口 

調試多線程的程序是痛苦的。。或者也能夠是頗有趣的。取決於你的調試器。VS2010真正優美的特性是線程窗口的棧視圖,經過窗口的調用棧你能夠方便的總覽線程。

 

8.條件斷點

若是你嘗試經過斷點再現一個罕見的事件,該狀況引起了一些嚴重的錯誤。你能夠添加條件斷點。定義一個斷點的條件,而後若是條件不成立,VS會忽略該斷點

 

9.內存窗口 

有些bug由不正確的結構體定義引發,忽略的對齊屬性等等。查看內存中的內容能夠定位而後修復bug。VS提供了一個放百年的內存窗口,能夠把值以8/16/32/64位的形式展現。還有浮點值。也容許實時改變他們。就像在文本編輯器裏同樣。

 

 

10.轉到定義

這個特性不是直接關於調試的,而是關於瀏覽大項目的。若是你嘗試找到一些不是你本身寫的代碼中的錯誤,快速知道「這個類型是什麼」或者「這個函數是幹嗎的」,能夠節省不少時間,VS經過一個轉到定義命令方便了你。

 

11.命令窗口

第十一的技巧chaau已經建議過了。確實能夠節省不少時間,VS支持命令窗口,能夠經過,視圖-其餘窗口-命令窗口來啓動。一旦激活,你能夠輸入不一樣的命令來自動化調試。舉個例子。你能夠經過以下命令 簡單的模擬MFC COleDateTime  變量。

 
? dt.Format("%Y-%m-%d %H:%M:%S") 

許可

本文包括源代碼和文件在CPOL下受權。

 

原文地址:10plus-powerful-debugging-tricks-with-Visual-Studi

著做權聲明:本文由http://leaver.me 翻譯,歡迎轉載分享。請尊重做者勞動,轉載時保留該聲明和做者博客連接,謝謝!

 

12.查看前幾步調試過程

有時候調試時忽然出現一個異常,想要知道這個異常是哪一步出錯了產生的,就須要逆向查看執行步驟,暫時百度沒有發現有專門回到上一步的方法(閱讀者若是知道還請不吝賜教),就本身找了一個

相關文章
相關標籤/搜索