在VC中使用Debug

2021-05-26 23:57:41 字數 2384 閱讀 4721

選定debug編譯選項

build -> set active configuration -> win32 debug

或者在build工具欄上的listbox中選擇debug。

debug定義了_debug巨集,而release定義了ndebug巨集。

先按f12編譯browse資訊

這樣編譯後可以查到變數定義。 

執行debug

按f5(注意,如果按ctrl+f5 是run,起不到debug的作用)。

在debug時一定要把debug工具欄拉出來,方便除錯。

breakpoints(f9)

用alt+f9可以對所有的斷點進行編輯。

對指令位址(eip)指定斷點

當eip的值為指定值時中斷。如下圖:是對setwindowlong的位址進行設定的(注意:一定要在前面加0x)。

對記憶體位址設定斷點

當指定記憶體位址發生變化時中斷(在執行時設定才管用)。

show next statement(alt+num *)

顯示當前指令所處的**位置

step over(f10)

單步追蹤,遇到call語句不進入

step into(f11)

單步追蹤,遇到call語句進入

step out(shift+f11)

跳出當前函式呼叫

run to cursor(ctrl+f10)

執行到游標所處位置

memory leaks

記憶體洩漏。要想檢查到memory leaks,必須包含標頭檔案(實際上是#pragma comment(lib, "mfc42ud.lib")在起作用)。

注意:記憶體洩漏是乙個十分嚴重的問題,尤其對於需要長時間執行的程式(程序長時間保留在記憶體中)更是如此。有乙個重要的事實是,當程序正常退出時,作業系統負責清空該程序的所有記憶體。

quickwatch(shift+f9)

可以更改變數執行時的值。

watch視窗

輸入"err,hr"可以動態檢視getlasterror資訊。可以輸入暫存器。

(long *)esp可以檢視堆疊內容。

variables視窗

當前函式的區域性變數

registers視窗

eip、esp、ecx

memory視窗

對變數可以拖放。options->debug中可以設定

call stack視窗

debug->modules視窗

profile(build選單下)

要先設定project -> settings -> link -> enable profiling

assert,verify

trace

在debug狀態下輸出,同時要求enable tracing開啟。

afxmessagebox

cout,printf

對控制台程式進行輸出測試

outputdebugstring

在debug和release狀態下都可以輸出。

debugbreak,_asm

強制中斷

如何對release版本進行debug

進行如下設定,然後就可以進行debug了。

settings -> c/c++ -> category(general) -> debug info=program database

settings -> link -> category(general) -> generate debug info=true

輸出彙編檔案

project settings中如下設定:

則會產生相應的彙編檔案 (*.asm / *.cod)

在win32程式中輸出字串到控制台

if (allocconsole())

}//freeconsole();

在VC中使用CCheckListBox

在軟體應用中經常會遇到需要複選功能的列表框。類cchecklistbox實現了windows複選列表框。複選列表框顯示項的乙個列表,例如檔名列表。列表中的每項都有乙個核取方塊,方便使用。但是vc的控 件列表中並新增cchecklistbox,因此在使用cchecklistbox還要進行一些手動設定,...

在VC中使用GDI

gdi 可應用於二維向量圖象,柵格圖象及排版,是為c c 程式設計師而設計的表現為c 類而存在的介面,能用於一切基於windows的應用中。作為gdi的後繼者,gdi 在gdi中增加了新功能,如文字的反鋸齒,漸變筆刷,alpha溶合 也優化了gdi許多已有的功能。此外,gdi 改變了程式設計模式,使...

在VC 中使用OCCI

1.簡介 在windows 下訪問oracle 資料庫可以使用 ado,ado.net,oledb,odbc,跨平台的 occi 等方法,其中速度最快,對 oracle 支援最完整的是 oracle 提供的occi.2.安裝occi sdk occi sdk 包含在oracle 客戶端中,在如下位置...