windows調試器之Visual C++

來源:互聯網
上載者:User
文章目錄
  • 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>

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.