那些VisualStudio隱藏的除錯功能

2021-06-17 17:54:48 字數 1883 閱讀 1169

大多數人用visual studio在除錯程式的時候先在程式開始的時候設定乙個斷點,然後依次f10/f11到自己想要檢視的邏輯。如果這個過程我們需要仔細檢視每一步的變數或者執行路徑,這樣做無可厚非,但是如果我們不想關心前面執行的邏輯,我們可以使用run to cursor功能,只需要滑鼠指標點到你想要執行到的那一行**,ctrl+f10,程式直接停在了滑鼠指標的那行**。

斷點大家都會用,條件斷點相信對於經常除錯的也不陌生,使用方法如下圖,

看上面這個右鍵選單,hit count估計很多人也再用,用它來指定在第幾次hit到這個斷點的時候斷下來,

接下來就更高階一些,filter,相信很多人在除錯多執行緒程式的時候都遇到過被其他執行緒干擾吧,好不容易斷下來,一步一步f10,忽然間另外乙個執行緒又把前面斷點hit了,剛才我跳的執行緒是哪個?想找到就難了。接下來就需要filter來出場了。通過filter我們可以過濾需要break的機器/程序/執行緒。

接下來就是when hit選項了,這個估計很多人用過它來跟蹤變數,上圖,帶過。

export, 匯出斷點的功能用的就更少了,其實有些場景斷點匯出可以讓你少費很多話。比如你在某段**發現乙個別人的bug,你可以將斷點匯出為xml,然後將它attach到bug上,bug owner直接找到對應版本匯入斷點,執行程式就可以了。

除錯的時候將滑鼠放在變數名上來檢視關心的資料,我們都是這麼做的,但是如果一段邏輯需要反覆執行,例如除錯某段演算法,你可以多點一下滑鼠,將這個變數釘在**旁邊,這樣比去watch視窗看要少轉很多眼珠哦。

另外這些data tip也是可以匯入和匯出的。

檢視反彙編**可以說是乙個visualstudio裡面的乙個隱藏功能,這個功能很少有人會注意到,但是對於我們想要學習組合語言或者理解一些特定的編譯器行為有很大的幫助。這個功能將組合語言和源**參照顯示,理解起來容易許多。

使用該功能很簡單,以我們在windbg u/uf/ub命令介紹中的程式**qsort.c為例,在visualstudio裡面開啟程式,設定斷點,直接通過visualstudio執行程式,或者attach到已經執行的程式中,當斷點被觸發後,右鍵然後選擇go to disassembly,

反彙編效果如下,接下來再看swap方法的彙編**,是不是很容易理解了?

Visual Studio的那些事兒

vs快捷鍵 ctrl shift b生成解決方案 ctrl f7 生成編譯 ctrl o 開啟檔案 ctrl shift o開啟專案 ctrl shift c顯示類檢視視窗 f4 顯示屬性視窗 shift f4顯示專案屬性視窗 ctrl shift e顯示資源檢視 f12 轉到定義 ctrl f12...

記錄 Visual Studio 隱式使用 dll

demo dll.h pragma once ifdef demo dll define dll api declspec dllexport else define dll api declspec dllimport endif dll api int add int a,int b dll a...

Visual Studio 技巧(備忘)

快捷鍵 1.ctrl 向下箭頭 游標不動,螢幕顯示內容向下滾 2.f8 將游標移動到下一項,如 任務列表 視窗中的任務或 查詢結果 視窗中的搜尋匹配項。每按一次 f8 鍵,就移動到列表中的下乙個項。alt f8 格式化源 alt f7 開啟project properties對話方塊 ctrl 游標...