文章目錄
- 1. 設定符號目錄:“工具”-->“選項” -->“調試”--> “符號”,增加一個符號路徑。然後點擊"載入所有符號",符號就會自動載入。
- 2. 如果不想設定符號目錄,則,找到模組視圖,選中模組點擊滑鼠右鍵,“載入符號”-->“符號路徑”來手動選擇正確的符號檔案
visual c++ 是visual studio中的一個組件。windows下開發C++是一個首選工具。這個工具強大了,每個人都知道哈哈
我打算給大家介紹一些windows下常用的調試器:
visual c++
ollydbg
windbg
visual c++作為我們的開發工具,當做調試器當然也不遜色,那他與別的調試器相比有哪些優劣點呢?
visual c++調試器作為visualc++的一個組件,帶源碼調試是非常強大的。能顯示出全域符號名、局部變數名和結構體等內容。
但是如果你沒有源碼或pdb符號檔案,那用visual c++調試就是一個痛苦的過程了,由於它的彙編顯示器沒有對彙編指令加量顯示,要想看清楚一個函數的邏輯,很不容易!
所以,visual c++ 是一個源碼級調試器,如果你沒有這個程式的源碼,那建議你使用ollydbg。
visual c++ 調試器到底怎麼使用呢?他有哪些功能?
- 1. vc 調試器支援本地和遠端偵錯
- 2. vc 是一個應用程式層調試器,不支援對驅動調試
- 3. vc對符號檔案支援很強大,如果有對應的符號,就能顯示出其中的局部變數和資料結構等
- 4. 一次可以調試多個進程
- 5. 可以對單個線程調試(把其他線程掛起)
- 6. 可以查看所有線程調用棧
- 7. 代碼和彙編指令之間可以相互切換,很方便
- 8. 靈活的斷點設定
一、開始調試
1. 啟動調試
vc調試器調試一個程式有兩種方式:啟動調試;附加調試
啟動調試是最常用的一種,程式編譯完成直接按F5啟動調試
2. 附加調試
那附加調試怎麼啟動呢? “工具”-->"附加到進程"(或直接按Ctrl+Art+p)在彈出的對話方塊中選擇要調試的進程,點擊“附加”即可。
二、設定符號(pdb檔案)
如果無法在代碼中下斷點,有一下幾種可能:
1. 代碼與編譯時間不一致2. 沒有符號檔案3. 符號檔案不匹配
第一種情況,如果強制下斷點,可能斷點下錯位置,從而無法在預訂的位置斷下來。最好找到當時對應的源碼檔案,或者轉到彙編視圖,在彙編中下斷點。
第二種情況和第三種情況,需要正確的符號檔案和路徑
如果沒有符號檔案,那建議用ollydbg調試
如果有符號檔案,並且知道位置,則可以按照下面步驟,
1. 設定符號目錄:“工具”-->“選項” -->“調試”--> “符號”,增加一個符號路徑。然後點擊"載入所有符號",符號就會自動載入。2. 如果不想設定符號目錄,則,找到模組視圖,選中模組點擊滑鼠右鍵,“載入符號”-->“符號路徑”來手動選擇正確的符號檔案
三、斷點
vc支援的斷點很豐富
1. 普通斷點:直接在代碼中按F9。取消斷點,再按F9
有時候普通斷點無法滿足調試需求,那看看他支援哪些斷點類型
2. 根據叫用次數下斷
如果只希望命中N次時才中斷,則可以在斷點上點擊滑鼠右鍵選擇“叫用次數”設定
3. 當產生中斷時列印資料
如果希望命中時列印一些日誌,則可以在斷點上點擊滑鼠右鍵選擇“命中條件”設定
4. 條件斷點
條件斷點是常用的斷點,如當某個局部變數的值等於多少時才中斷。可以在斷點上點擊滑鼠右鍵選擇“條件”設定
如 i == 5 && wsinfo.bNew == true (可以對一個結構的欄位設定條件)
字串條件斷點:stricmp( proc32.szExeFile, "system") == 0 (如果進程名是system則中斷)
vc還支援strcmp \strncmp等其他字串比較函數
5. 條件式篩選
如果你只想對某一個線程下斷,可以使用條件式篩選器。在斷點上點擊滑鼠右鍵選擇“篩選器”設定
四、調試相關的視窗
這些視窗都可以在"調試"-->“視窗”中的子功能表中找到
1. 模組列表
顯示了所有模組資訊。包括模組載入地址和大小、模組路徑、是否載入了符號。
2. 線程列表
線程列表中可以查看每個線程的調用棧,並且可以掛起(凍結)個別線程
3. 監視器
監視器可以監視某個全域變數或者局部變數的值,當然寄存器的值也可以監視。
如果想看當前線程的LastError錯誤碼,在監視器中輸入 @err
4. 彙編器
可以看到源碼對應的彙編指令
5. 記憶體查看器
可以根據一個地址,查看記憶體資料
6. 輸出視窗
查看日誌輸出
7.呼叫堆疊
當前線程的調用棧
8. 自動視窗和局部變數
顯示當前局部變數或全域變數的值,很方便
9. 斷點列表
所有斷點資訊
10. 寄存器視窗
所有寄存器當前值
五、遠端偵錯
如果想調試一個遠程電腦上的程式該怎麼辦呢?
1. 在遠程機器上運行遠端偵錯監視(vcmsmon.exe)
遠端偵錯監視所在目錄:C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger
(我的VC安裝在c盤,並且路徑是預設的。vc版本是2010。可能與你的不同)
然後選擇版本,如果目標機器是x86,則吧x86目錄中所有檔案COPY到目標機,如果是ia64,則COPYia64目錄到目標機中
然後在目標機上啟動vcmsmon.exe進程。並設定成TCP連結方式,連接埠為預設。"工具"-->“選項”中設定
2. 遠程啟動調試
“項目”-->"屬性"“配置屬性”“調試”
在“要啟動的調試器”中選擇“遠程 windows 調試器”
“命令”中輸入遠程機器等待調試的進程全路徑
“工作目錄”設定進程的工作目錄
"遠程伺服器名字" 輸入 遠程機器IP
“連結”中選擇“不帶身分識別驗證的遠端存取”
設定好後,按F5啟動調試
3. 遠程附加調試
“工具”-->"附加到進程"(或直接按Ctrl+Art+p)在彈出的對話方塊中的
“傳輸”中選擇“遠程(...)”
"限定符"中輸入遠程機器IP
然後點“重新整理”
選擇要調試的進程,點擊“附加”
六、其他1. 調試快速鍵:
F10單步步過
F11單步步入
F5繼續
shift+f11 跳出
轉載請註明出處。點點靈犀 sunyikuyu <ddlx studio>