• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 132  文章 - 51  trackbacks - 0
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            常用鏈接

            留言簿(7)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            cocos2d-x

            OGRE

            OPenGL

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            假設(shè)
            int *block;
            在watch窗口查看block,看到的是block的地址
            用block[0],只能看到一個(gè)值
            可以用   block,10    來同時(shí)查看多個(gè)值
            用(&block[2]),6 可以查看block[2]到[7]

            watch窗口語法規(guī)則
            一.格式化數(shù)據(jù)和表達(dá)式賦值語句.
              
            常用變量格式化符(表達(dá)式的值后跟逗號(hào),接格式化符,如"(int)0xFFFF,d"):
            d,I:有符號(hào)的十進(jìn)制數(shù).
            u     :無符號(hào)的十進(jìn)制數(shù).
            o     :無符號(hào)的八
            x,X:十六進(jìn)制數(shù).
            l,h:d,i,u,o,x,X的長前綴或短前綴.
            f     :有符號(hào)浮點(diǎn)數(shù).
            e     :有符號(hào)的科學(xué)計(jì)數(shù)法.
            g     :有符號(hào)的浮點(diǎn)或有符號(hào)的科學(xué)計(jì)數(shù)法,用其中較短的一個(gè).
            c     :單字符.
            s     :字符串.
            su   :雙字節(jié)字符串.
            st   :雙字節(jié)字符串或ANSI字符串,取決于AUTOEXP.DAT中的Unicode   String設(shè)置.
            hr   :Windows類標(biāo)記.
            wm   :Windows消息碼.
              
            常用內(nèi)存轉(zhuǎn)儲(chǔ)對(duì)象的格式化符(用法同變量格式化符):
            ma   :64個(gè)ASCII碼字符.
            m     :以16進(jìn)制書寫的16字節(jié),后跟16個(gè)ASCII字符.
            mb   :以16進(jìn)制書寫的16字節(jié),后跟16個(gè)ASCII字符.
            mw   :8個(gè)字長.
            md   :4個(gè)雙精度字.
            mq   :4個(gè)四倍字長的字.
            mu   :2字節(jié)字符(Unicode標(biāo)準(zhǔn)).
            #     :將指針擴(kuò)展到指定的數(shù)值數(shù)目的內(nèi)存存儲(chǔ)單元上.(#代表一個(gè)數(shù)字)
              
            WATCH窗口允許重新設(shè)置數(shù)據(jù)變量的格式,
            如:可用BY,DW表達(dá)式來定位指針的偏移量;
            可用&和*運(yùn)算符,且兩運(yùn)算符都可直接操作內(nèi)存地址;
            甚至可用上下說明符明確指定變量的上下文.
            總之,所有格式化方法和指定方法在WATCH窗口都有效
              
            WATCH窗口是一個(gè)完整的表達(dá)式求值程序,可以在其中查看任何條件語句.
              
            表達(dá)式中可用的偽寄存器(可當(dāng)普通變量進(jìn)行查看):
            @ERR:最后一個(gè)錯(cuò)誤值,GetLastError   API返回相同的值.
            @TIB:當(dāng)前線程的線程信息塊.(調(diào)試器不能處理"FS:0"格式). 
            @CLK:時(shí)鐘寄存器.
            @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浮點(diǎn)寄存器.
              
            二.適時(shí)編碼
              
            許多時(shí)候只想對(duì)兩斷點(diǎn)間的執(zhí)行時(shí)間有個(gè)大致印象,可用@CLK得出兩斷點(diǎn)間所需執(zhí)行時(shí)間(包括調(diào)試器占用的時(shí)間).
            需要輸入兩個(gè)@CLK觀察符,第一個(gè)是@CLK,第二個(gè)是@CLK=0.第二個(gè)的目的是重新運(yùn)行時(shí)將定時(shí)器清0.
            時(shí)間以微秒為單位,大多數(shù)情況下需要格式化為毫秒:"@CLK/1000,d".
              
            三.在WATCH窗口中調(diào)用函數(shù)
              
            大多數(shù)情況下用于執(zhí)行專門編寫的校驗(yàn)數(shù)據(jù)結(jié)構(gòu),保證數(shù)據(jù)的相關(guān)性的函數(shù).在釋放構(gòu)件中,從未調(diào)用過的函數(shù)不會(huì)被鏈接,因此不必?fù)?dān)心這類函數(shù)會(huì)對(duì)影響發(fā)布構(gòu)件.
            如函數(shù)沒有參數(shù),也要求使用括號(hào)"()",調(diào)用時(shí)像用普通函數(shù)一樣傳送參數(shù).WATCH右邊將顯示函數(shù)返回值.
            這里有些限制:
            1.只能在一個(gè)單線程上下文中執(zhí)行函數(shù).如是多線程程序,將函數(shù)輸入到WATCH窗口中檢查結(jié)果后應(yīng)立即從WATCH窗口清除,否則,如調(diào)試函數(shù)在第二個(gè)線程上下文中執(zhí)行,會(huì)立即終止第二個(gè)線程的運(yùn)行.
            2.調(diào)試函數(shù)必須在20秒內(nèi)執(zhí)行.如執(zhí)行過程中出現(xiàn)異常,程序會(huì)在調(diào)試器中中止.
            3.(常識(shí))只對(duì)數(shù)據(jù)驗(yàn)證進(jìn)行內(nèi)存讀取,如有問題,調(diào)用OutputDebugString類的函數(shù).如更改內(nèi)存或調(diào)用API函數(shù)----盡管這是可能的,但無法預(yù)知可能會(huì)發(fā)生什么.
            只要在WATCH窗口中重新計(jì)算表達(dá)式,已輸入WATCH窗口的調(diào)試函數(shù)就會(huì)執(zhí)行:
            .程序處于運(yùn)行狀態(tài)并觸發(fā)某一斷點(diǎn)時(shí).
            .單步調(diào)試某一代碼行或某一指令時(shí).
            .在WATCH窗口左邊編輯完成調(diào)試函數(shù)的文本并按下回車時(shí).
            .在運(yùn)行程序時(shí)出現(xiàn)異常情況,并讓你返回調(diào)試器中時(shí).
            使用調(diào)試函數(shù)的建議:輸入調(diào)試函數(shù)并查看值后,立即從WATCH窗口清除;只為最關(guān)鍵的數(shù)據(jù)結(jié)構(gòu)編寫調(diào)試函數(shù);不要更改個(gè)別結(jié)構(gòu)的轉(zhuǎn)儲(chǔ)內(nèi)像.
              
            四.自動(dòng)擴(kuò)展自己的類型
              
            常見的自動(dòng)擴(kuò)展是RECT,輸入RECT型的變量后直接顯示其中的某些數(shù)據(jù)成員的值.
            自定義類型擴(kuò)展時(shí),只需將自己的類型入口加入<VS   Common>\MSDev98\Bin目錄的AUTOEXP.DAT文件中.
            例:
            擴(kuò)展CreateProcess()所用到的PROCESS_INFORMATION結(jié)構(gòu)
            1.檢查調(diào)試器將該類型識(shí)別為什么.將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)制查看.有個(gè)特殊的格式化符<,t>,用于通知調(diào)試器輸入最易派生類型的類型名.如B派生至A,只有B有自動(dòng)擴(kuò)展規(guī)則,則B的自動(dòng)擴(kuò)展將會(huì)是后面跟隨著類A的自動(dòng)擴(kuò)展規(guī)則的類型名B.
              
            五.Set   Next   Statement命令
              
            可以在調(diào)試時(shí)從菜單運(yùn)行,但也可在WATCH窗口中直接設(shè)置EIP寄存器----小心,可能很容易摧毀程序.在最優(yōu)化的釋放構(gòu)件中,最安全的方法是在Disassembly窗口中使用該命令.如代碼在堆棧上創(chuàng)建了臨時(shí)變量,更要多加小心.
            最 常用的情況是:在出問題的函數(shù)前設(shè)置一個(gè)斷點(diǎn),檢查進(jìn)入的參數(shù),單步調(diào)試整個(gè)函數(shù);如問題不是重復(fù)的,使用Set   Next   Statement設(shè)置返回到斷點(diǎn)的執(zhí)行點(diǎn),并更改參數(shù).這樣可在一個(gè)調(diào)試會(huì)話中測(cè)試多個(gè)假設(shè),節(jié)省測(cè)試時(shí)間,但它不能用于所有場(chǎng)合,因?yàn)楹瘮?shù)執(zhí)行會(huì)破壞 其狀態(tài).
            另一個(gè)常用地點(diǎn)是測(cè)試時(shí)填充數(shù)據(jù)結(jié)構(gòu),如表和數(shù)組,可用它輸入額外的數(shù)據(jù)并查看代碼如何處理--當(dāng)某些數(shù)據(jù)條件難于復(fù)制時(shí)更為方便.

            轉(zhuǎn)載自:

            http://hi.baidu.com/yacper/blog/item/d4ace923495df35a9822edd8.html

            posted on 2010-05-20 10:00 風(fēng)輕云淡 閱讀(1346) 評(píng)論(0)  編輯 收藏 引用 所屬分類: VC
            国产精品久久久久a影院| 无码人妻精品一区二区三区久久久 | 色婷婷久久综合中文久久一本| 久久久久久久人妻无码中文字幕爆 | 欧美午夜A∨大片久久| 色综合久久天天综合| 久久人人爽爽爽人久久久| 亚洲AV成人无码久久精品老人| 中文字幕精品无码久久久久久3D日动漫 | 久久99精品国产麻豆蜜芽| 99久久精品九九亚洲精品| 色噜噜狠狠先锋影音久久| 久久久综合九色合综国产| 伊人久久精品线影院| 国产亚州精品女人久久久久久 | 日韩欧美亚洲综合久久| 久久久无码精品亚洲日韩蜜臀浪潮| 久久亚洲欧洲国产综合| 亚洲国产成人精品久久久国产成人一区二区三区综 | AV狠狠色丁香婷婷综合久久| 色偷偷88888欧美精品久久久| 久久精品国产99久久无毒不卡 | 久久66热人妻偷产精品9| 热久久这里只有精品| 久久夜色精品国产| 99精品久久精品一区二区| 99国产欧美精品久久久蜜芽| 99精品久久精品一区二区| 国产日韩久久久精品影院首页| 久久五月精品中文字幕| 亚洲AV无码久久精品狠狠爱浪潮| 精品久久久久久中文字幕| 精品无码久久久久久久久久| 伊色综合久久之综合久久| 99久久无码一区人妻a黑| 久久精品国产亚洲AV不卡| 久久99久久99精品免视看动漫| 97精品国产91久久久久久| 日韩AV毛片精品久久久| 久久精品夜夜夜夜夜久久| 青青久久精品国产免费看|