vc6.0程式除錯技術總結
【原文:http://blog.csdn.net/changqiang08/article/details/7642387】
vc6.0程式除錯技術總結
學c語言,一直編寫的都是小程式。但是在寫微控制器程式時,會出現一些問題,就需要程式的除錯技術。在圖書館借了一本書《c語言程式設計實驗教程》(西工大出版社),再結合網上一些網友的博文,在這裡對vc6.0的程式除錯技術簡單梳理一下。
現代程式除錯的方法主要有兩種:單步法、斷點法。
一、單步法
a、step into F11 單步除錯
遇到函式時,會進入到函式內部進行更深入的單步除錯,若是系統庫函式程式碼。則可能進入指令級而非原始碼級的單步除錯。
b、step over F10 單步除錯
遇到函式時。把函式當做 “一步” 來完成除錯,如遇到已除錯正確的函式,或系統庫函式就可以直接用step over
c、step out F11 + shift 退出
d、run to cursor F10 + ctrl 多步除錯/快步除錯
step into和step over的區別是step over一直下一步,step into 在step over的基礎上,遇到函式會進入到函式內部,以便更深入的單步除錯。
run to cursor可進行多步除錯,從當前程式除錯執行的程式行執行到游標所在程式行。
二、斷點法
基本思想:在程式中,設定若干斷點,在執行過程中程式連續執行下去,遇到斷點程式或斷點條件時停止,在停下來的地方進行單步除錯。
a、insert breakpoint F9 斷點設定
b、remove breakpoint F9 斷點刪除
c、location 條件斷點
為斷點設定一個條件,條件可為表示式,當表示式發生改變時,除錯結束。
d、data 資料斷點
為斷點設定一個表示式(運算子+全域性變數),當表示式的值發生改變時,資料斷點就會到達,除錯結束。
e、message 訊息斷點
windows 程式對windows訊息進行截獲(截獲方式:視窗訊息處理函式和特定資訊中斷),當輸入訊息處理函式的名字,當每次有訊息被這個函式處理時,斷點就會到達。
(1)、條件斷點
1、按F9,設定斷點位置。
2、按快捷鍵“alt+ F9”, 或通過選單“edit/breakpoints”開啟“breakpoints”對話方塊,選擇設定的斷點,如下圖
3、條件斷點的表示式:i==0&&j==4
4、單擊OK。現在我們開始除錯程式,按F5, VC會彈出一個提示對話方塊,提示在你設定的條件斷點的中斷位置:
(2)資料斷點
1、第1步和條件斷點一樣
2、
3、
(3)訊息斷點
略
三、觀察法
通過單步或者斷點,可以使使指定的程式停下來,vc提供多種資料觀察方法來了解程式執行期間的各種資訊,從而判斷錯誤的原因。
(1)檢視(watch)
vc支援檢視變數、表示式和記憶體的值,當斷點到達時,將游標移動到該變數和表示式上時停留片刻,就可以看到變數和表示式的值。
(2)定製檢視(Quick Watch)
vc提供一種被稱為watch的機制,檢視變數、表示式的值,在斷點狀態下,在變數上單擊右鍵,選擇“Quick Watch ”,彈出一個“Quick Watch ”對話方塊,顯示這個變數的值。表示式亦然,但這個表示式不能有副作用,“++”操作符會改變變數的值。
單吉Debug工具條上的“ Watch ”按鈕,就出現一個“ Watch ”檢視,在該檢視中輸入變數和表示式,就可以檢視變數、表示式的值。
(3)記憶體檢視(memory)
由於指標指向的陣列,“ Watch ”只能檢視第一個元素的值,為了顯示其他元素,可以使用memory功能。單吉Debug工具條上的“memory ”按鈕,就出現一個“memory ”檢視,在該檢視中輸入地址和陣列名,就可以顯示該地址指向的記憶體的內容。
(4)變數檢視(varibles)
(5)暫存器檢視(Registers)
單吉Debug工具條上的“ Registers ”按鈕,就出現一個“ Registers ”檢視,顯示當前所有暫存器的值。
(6)呼叫堆疊(Call Stack )
呼叫堆疊反映了當前斷點處函式是被哪些函式按照什麼順序呼叫的。單吉Debug工具條上的“ Call Stack ”按鈕,就出現一個“Call Stack ”對話方塊,在該對話方塊顯示了一個呼叫序列,最上面的是當前函式,往下依次是呼叫函式的上級函式。單擊對應的函式,就可以跳轉到對應的函式中去。
(7)反彙編檢視(Disassembly)。
另:先下斷點,然後按F5或者點選Debug->Start Debuging程式停在斷點處。
然後點選按鈕 Debug->Windows->DisAssambly
可以找到各個檢視視窗
博文寫完後,發現一篇較好的,留存,以後慢慢看:
http://www.vckbase.com/index.php/wv/683
相關文章
- ***php除錯總結PHP除錯
- gdb除錯總結除錯
- Bochs 除錯技術(轉)除錯
- C++除錯總結C++除錯
- 《除錯九法》:除錯是個技術活除錯
- Web除錯技術詳解Web除錯
- iOS無線除錯技術iOS除錯
- 掌握 Linux 除錯技術Linux除錯
- windbg 常用除錯命令總結除錯
- CMake技術總結
- WPF技術總結
- BypassUAC技術總結
- easyui技術總結UI
- 最近技術總結
- docker技術總結Docker
- 深入Java除錯技術 -Ari NomanJava除錯
- Qt入門(10)——除錯技術QT除錯
- 掌握 Linux 除錯技術(轉)Linux除錯
- 掌握Linux除錯技術(轉)Linux除錯
- 編寫高質量OC程式碼52建議總結:13.用“方法調配技術”除錯“黑盒方法”C程式除錯
- 不同Java除錯方法總結 - VardhanJava除錯
- xcode lldb除錯使用總結XCodeLLDB除錯
- 程式設計和除錯中的幾點總結 (轉)程式設計除錯
- 個人技術棧總結
- 池化技術總結
- Jsp技術總結JS
- Oracle Flashback 技術 總結Oracle
- Oracle Flashback技術總結Oracle
- 智慧控制技術總結
- docker技術總結(二)Docker
- Linux技術——gdb除錯基礎Linux除錯
- [技術討論]程式碼除錯,程式設計師的基本功除錯程式設計師
- 前端chrome瀏覽器除錯總結前端Chrome瀏覽器除錯
- 最全面的JavaScript除錯技巧總結JavaScript除錯
- 特徵選擇技術總結特徵
- #web前端技術使用總結Web前端
- MySQL分頁技術總結MySql
- 漏洞挖掘分析技術總結