原譯 11個高效的VS除錯技巧

2021-06-09 22:48:06 字數 2891 閱讀 9872

介紹

除錯是軟體開發周期中的乙個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是,對於任何不是太那個微不足道的程式來說,除錯是不可避免的。近年來,除錯工具的發展已經使得很多除錯任務簡單省時了。

本文總結了十個除錯技巧,當你使用vs的時候可以節省你很多時間。

1.懸停滑鼠檢視表示式

除錯有時候很有挑戰性,當你步入乙個函式想看看哪塊出錯的時候,檢視呼叫棧來想想值是從哪來的。另一些情況下,則需要新增一些監視表示式,或者檢視區域性變數列表,這通常還是花費一些時間的,但是。如果你把你滑鼠指向你感興趣的乙個變數。你會發現事情簡單多了。而且,類和結構體可以通過單擊展開。這樣。你就可以方便快捷的找到你想檢視的變數了。

2實時改變值

偵錯程式不僅僅是乙個分析程式崩潰或是異常結果的工具了,許多bug都可以通過步入新寫的函式,檢查函式是否如期望的那樣執行來預防。有時候你可能會好奇「如果條件為真函式會正確執行嗎」大多數情況下,根本不需要改變**重啟挑起,僅僅把滑鼠懸停到乙個變數上,雙擊值然後輸入乙個新值就可以了。。

3.設定下一條語句

乙個典型的除錯情況就是通過單步跟蹤分析為什麼乙個函式呼叫失敗了。當你發現乙個函式呼叫的另乙個函式返回錯誤的時候你會怎麼做?重啟除錯?有更好的方法。拖動這個黃色的語句標識到你想下一步執行的語句前就可以了。比如你剛才失敗的那塊,然後步入。簡單,不是嗎?

4.編輯然後繼續

除錯乙個複雜的程式,或是乙個外掛程式的時候,在乙個被呼叫很多次的函式處發現乙個錯誤。但是不想浪費時間停下來,重新編譯然後重新除錯。沒問題,僅僅在該處改正**然後繼續單步就可以。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下授權。

原譯 11個高效的VS除錯技巧

介紹 除錯是軟體開發周期中的乙個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是,對於任何不是太那個微不足道的程式來說,除錯是不可避免的。近年來,除錯工具的發展已經使得很多除錯任務簡單省時了。本文總結了十個除錯技巧,當你使用vs的時候可以節省你很多時...

原譯 11個高效的VS除錯技巧

介紹 除錯是軟體開發周期中的乙個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是,對於任何不是太那個微不足道的程式來說,除錯是不可避免的。近年來,除錯工具的發展已經使得很多除錯任務簡單省時了。本文總結了十個除錯技巧,當你使用vs的時候可以節省你很多時...

11個高效的VS除錯技巧

介紹 除錯是軟體開發周期中的乙個很重要的部分,有時很有挑戰性,有時候則讓程式設計師迷惑,有時候讓程式設計師發瘋,但是。可以肯定的是,對於任何不是太那個微不足道的程式來說,除錯是不可避免的。近年來,除錯工具的發展已經使得很多除錯任務簡單省時了。本文總結了十個除錯技巧,當你使用vs的時候可以節省你很多時...