欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

vs的watch使用

系統(tǒng) 1822 0

VC調(diào)試器高級應(yīng)用----WATCH窗口篇

一.格式化數(shù)據(jù)和表達(dá)式賦值語句.

常用變量格式化符(表達(dá)式的值后跟逗號,接格式化符,如"(int)0xFFFF,d"):
d??:有符號的十進(jìn)制數(shù).
u??:無符號的十進(jìn)制數(shù).
o??:無符號的八
x,X:十六進(jìn)制數(shù).
d,i,u,o,x,X的長前綴或短前綴.
f??:有符號浮點數(shù).
e??:有符號的科學(xué)計數(shù)法.
g??:有符號的浮點或有符號的科學(xué)計數(shù)法,用其中較短的一個.
c??:單字符.
s??:字符串.
su?:雙字節(jié)字符串.
st?:雙字節(jié)字符串或ANSI字符串,取決于AUTOEXP.DAT中的Unicode?String設(shè)置.
hr?:Windows類標(biāo)記.
wm?:Windows消息碼.

常用內(nèi)存轉(zhuǎn)儲對象的格式化符(用法同變量格式化符):
ma?:64個ASCII碼字符.
m??:以16進(jìn)制書寫的16字節(jié),后跟16個ASCII字符.
mb?:以16進(jìn)制書寫的16字節(jié),后跟16個ASCII字符.
mw?:8個字長.
md?:4個雙精度字.
mq?:4個四倍字長的字.
mu?:2字節(jié)字符(Unicode標(biāo)準(zhǔn)).
#??:將指針擴(kuò)展到指定的數(shù)值數(shù)目的內(nèi)存存儲單元上.(#代表一個數(shù)字)

WATCH窗口允許重新設(shè)置數(shù)據(jù)變量的格式,
如:可用BY,DW表達(dá)式來定位指針的偏移量;
可用&和*運算符,且兩運算符都可直接操作內(nèi)存地址;
甚至可用上下說明符明確指定變量的上下文.
總之,所有格式化方法和指定方法在WATCH窗口都有效

WATCH窗口是一個完整的表達(dá)式求值程序,可以在其中查看任何條件語句.

表達(dá)式中可用的偽寄存器(可當(dāng)普通變量進(jìn)行查看):
@ERR:最后一個錯誤值,GetLastError?API返回相同的值.
@TIB:當(dāng)前線程的線程信息塊.(調(diào)試器不能處理"FS:0"格式).
@CLK:時鐘寄存器.
@EAX,@EBX,@ECX,@EDX,@ESI,@EDI,@DIP,@ESP,@EBP,@EFL
????:Intel?CPU寄存器.
@CS,@DS,@ES,@SS,@FS,@GS
????:Intel?CPU段寄存器.
@ST0,@ST1,@ST2,@ST3,@ST4,@ST5,@ST6,@ST7
????:Intel?CPU浮點寄存器.

二.適時編碼

許多時候只想對兩斷點間的執(zhí)行時間有個大致印象,可用@CLK得出兩斷點間所需執(zhí)行時間(包括調(diào)試器占用的時間).
需要輸入兩個@CLK觀察符,第一個是@CLK,第二個是@CLK=0.第二個的目的是重新運行時將定時器清0.
時間以微秒為單位,大多數(shù)情況下需要格式化為毫秒:"@CLK/1000,d".

三.在WATCH窗口中調(diào)用函數(shù)

大多數(shù)情況下用于執(zhí)行專門編寫的校驗數(shù)據(jù)結(jié)構(gòu),保證數(shù)據(jù)的相關(guān)性的函數(shù).在釋放構(gòu)件中,從未調(diào)用過的函數(shù)不會被鏈接,因此不必?fù)?dān)心這類函數(shù)會對影響發(fā)布構(gòu)件.
如函數(shù)沒有參數(shù),也要求使用括號"()",調(diào)用時像用普通函數(shù)一樣傳送參數(shù).WATCH右邊將顯示函數(shù)返回值.
這里有些限制:
1.只能在一個單線程上下文中執(zhí)行函數(shù).如是多線程程序,將函數(shù)輸入到WATCH窗口中檢查結(jié)果后應(yīng)立即從WATCH窗口清除,否則,如調(diào)試函數(shù)在第二個線程上下文中執(zhí)行,會立即終止第二個線程的運行.
2.調(diào)試函數(shù)必須在20秒內(nèi)執(zhí)行.如執(zhí)行過程中出現(xiàn)異常,程序會在調(diào)試器中中止.
3.(常識)只對數(shù)據(jù)驗證進(jìn)行內(nèi)存讀取,如有問題,調(diào)用OutputDebugString類的函數(shù).如更改內(nèi)存或調(diào)用API函數(shù)----盡管這是可能的,但無法預(yù)知可能會發(fā)生什么.
只要在WATCH窗口中重新計算表達(dá)式,已輸入WATCH窗口的調(diào)試函數(shù)就會執(zhí)行:
.程序處于運行狀態(tài)并觸發(fā)某一斷點時.
.單步調(diào)試某一代碼行或某一指令時.
.在WATCH窗口左邊編輯完成調(diào)試函數(shù)的文本并按下回車時.
.在運行程序時出現(xiàn)異常情況,并讓你返回調(diào)試器中時.
使用調(diào)試函數(shù)的建議:輸入調(diào)試函數(shù)并查看值后,立即從WATCH窗口清除;只為最關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)編寫調(diào)試函數(shù);不要更改個別結(jié)構(gòu)的轉(zhuǎn)儲內(nèi)像.

四.自動擴(kuò)展自己的類型

常見的自動擴(kuò)展是RECT,輸入RECT型的變量后直接顯示其中的某些數(shù)據(jù)成員的值.
自定義類型擴(kuò)展時,只需將自己的類型入口加入<VS?Common>\MSDev98\Bin目錄的AUTOEXP.DAT文件中.
例:
擴(kuò)展CreateProcess()所用到的PROCESS_INFORMATION結(jié)構(gòu)
1.檢查調(diào)試器將該類型識別為什么.將PROCESS_INFORMATION變量輸入WATCH窗口,右擊變量,選擇Properties,在這里它被標(biāo)注為_PROCESS_INFORMATION類型.
2.打開AUTOEXP.DAT文本文件,加入擴(kuò)展入口.語法如下:
Type=[text]<member[format]>
本例中要查看hProcess和hThread值,故輸入:
_PROCESS_INFORMATION=hProcess=<hProcess,X>?hThread=<hThread,X>
其中X表示以16進(jìn)制查看.有個特殊的格式化符<,t>,用于通知調(diào)試器輸入最易派生類型的類型名.如B派生至A,只有B有自動擴(kuò)展規(guī)則,則B的自動擴(kuò)展將會是后面跟隨著類A的自動擴(kuò)展規(guī)則的類型名B.

五.Set?Next?Statement命令

可以在調(diào)試時從菜單運行,但也可在WATCH窗口中直接設(shè)置EIP寄存器----小心,可能很容易摧毀程序.在最優(yōu)化的釋放構(gòu)件中,最安全的方法是在Disassembly窗口中使用該命令.如代碼在堆棧上創(chuàng)建了臨時變量,更要多加小心.
最常用的情況是:在出問題的函數(shù)前設(shè)置一個斷點,檢查進(jìn)入的參數(shù),單步調(diào)試整個函數(shù);如問題不是重復(fù)的,使用Set?Next?Statement設(shè)置返回到斷點的執(zhí)行點,并更改參數(shù).這樣可在一個調(diào)試會話中測試多個假設(shè),節(jié)省測試時間,但它不能用于所有場合,因為函數(shù)執(zhí)行會破壞其狀態(tài).
另一個常用地點是測試時填充數(shù)據(jù)結(jié)構(gòu),如表和數(shù)組,可用它輸入額外的數(shù)據(jù)并查看代碼如何處理--當(dāng)某些數(shù)據(jù)條件難于復(fù)制時更為方便.

拾遺:

1.數(shù)組指針顯示

int *block;

在watch窗口查看block,看到的是block的地址

用block[0],只能看到一個值

可以用?? block,10??? 來同時查看多個值

用(&block[2]),6? 可以查看block[2]到[7]

2 hr使用:

?$err,hr 顯示lasterror的返回錯誤代碼。

??23,hr?0x00000017 數(shù)據(jù)錯誤(循環(huán)冗余檢查)。

?

?

參考網(wǎng)頁:

http://bbs.csdn.net/topics/50110658

http://www.2cto.com/kf/201202/119593.html

http://blog.csdn.net/lingyin55/article/details/6600447

vs的watch使用


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 欧美顶级xxxxbbbb| 日本护士xxxxx极品 | 91成人精品 | 日日操日日干 | 欧美三级午夜理伦三级小说 | 日韩 欧美 中文 | 秋霞理论在线视频 | 人成免费a级毛片 | 成人高清在线视频 | 一区亚洲 | 亚洲精品中文字幕乱码一区二区 | 亚洲精品久久久久久一区二区 | 国产精品欧美一区二区在线看 | 亚洲精品一区二区三区不 | 天天夜夜操操 | 免费a视频在线观看 | 在线观看亚洲精品 | 久久综合日韩亚洲精品色 | 精品推荐国产麻豆剧传媒 | 午夜在线免费观看 | 黄色视屏免费看 | 欧美三极 | 婷婷开心六月久久综合丁香 | 亚洲日韩中文字幕 | 香蕉国产成版人视频在线观看 | 91最新在线视频 | 日韩中文字 | 国内精品视频在线观看 | 污视频在线观看网站 | 嘿咻免费视频欧美激情 | 欧美成人精品久久精品 | 91青青国产在线观看免费 | 欧美日韩在线视频一区 | 婷婷国产| 午夜性啪啪A片免费播放 | 黄色av网站在线免费观看 | 国产成人精品视频播放 | 欧美亚洲一区二区三区 | 一级高清视频www | 欧美伦妇高清免费 | 九一精品 |