Visual Studio調試之斷點基礎篇

來源:互聯網
上載者:User

我曾經問過很多人,你一般是怎麼調試你的程式的?

F9, F5, F11, F……

有很多書和文章都是介紹怎麼使用Visual Studio編寫WinForm啦,、ASP.NET之類的程式;知道如何編寫固然重要,但是我覺得程式員可能只會花費30%的時間在編寫代碼上,剩下的大部分時間都是在偵錯工具。在網上看到很多人介紹Windbg的用法,但是沒有看到幾篇講解使用Visual Studio調試的文章。Windbg固然強大,但是問題是它的學習曲線太陡了,而且很多調試並不需要使用Windbg來調試(當然啦,並不是指我不會Windbg調試啦—這是以後的調試系列文章將要講的),為什麼不使用我們最熟悉的Visual Studio來進行調試呢?

調試嘛,無非就是要看看程式在運行時候,內部的狀態,例如一些變數的值是多少,看一看程式調用的路徑啦之類的。當然最直接的方式就是直接中斷程式的執行,用調試器去檢查一下程式的情況嘛。於是F9, F5, F10, F11……

那麼我們就來說說什麼是斷點,斷點是什嗎?不是F9 ,也不是那個小紅球,在Intel系列的CPU(包括AMD生產的CPU)裡面,它其實是一個特殊的指令—INT 3。CPU在執行程式的指令集的時候,只要碰到這個指令,就會中斷程式的執行(當然啦,CPU會通知作業系統,然後……然後……然後……,斷點的實現機制我會在以後的文章裡面講解,現在我們就只要知道那個INT 3指令會中斷程式的執行好嗎?)。

當然啦,我們需要用事實來證明我上面的話,因此把下面的程式編譯並且執行一下,點“Yes”,點“Break”,對對對,程式中斷了,我相信你可以看見的:

#include <stdio.h>

 

void main()

{

       printf("Before breakpoint"n");

       __asm

       {

              int 3

       }

       printf("Before breakpoint"n");

}

 

編譯方法:

1.       在開始菜單中開啟Visual Studio 2008[2005] Command Prompt(Visual Studio 2008[2005]命令列)。

2.       進入儲存上面 C原始碼(int3.c)的檔案夾的路徑。

3.       執行編譯命令(因為我的機器是Windows 7 RC + Visual Studio 2008 + x64 CPU,直接編譯有一點問題,如果你的機器不是我上面的配置,可以嘗試執行cl /Zi int3.c

cl /Zi /c int3.c

4.       執行連結命令(如果你直接執行了命令cl /Zi int3.c的話就可以跳過這一步)。

link /libpath:"C:"Program Files"Microsoft SDKs"Windows"v6.0A"Lib" int3.obj

5.       運行輸出的int3.exe。

這時你應該會看到Visual Studio彈出來,然後在原始碼行的int 3上面中斷,說明我們已經成功地讓CPU中斷int3.exe程式 的執行了。

提示:如果你執行int3.exe的時候,沒有發現Visual Studio視窗彈出來的話,那麼請點擊Visual Studio功能表項目裡面的“Tools(工具)”—“Options(選項)”,接著在“Options(選項)”視窗中選擇 “Debugging(調試)”—“Just-In-Time(即時調試)”,然後勾選“Native(原生程式)”選項。如所示:

“綜上所述,斷點是int 3這個指令觸發的!(小時候的數學證明題)”。

由int 3這個指令(當然是在intel系列的CPU上面)引申出來有哪些函數呢:

語言/工具

名稱

描述

C++

DebugBreak

在C++代碼中寫入程式碼一個斷點。

C#

Debugger.Break

在.NET代碼中寫入程式碼一個斷點

Visual 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.