青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

唐吉訶德

  C++博客 :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
  5 Posts :: 75 Stories :: 3 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團(tuán)隊(duì)

搜索

  •  

最新評(píng)論

閱讀排行榜

評(píng)論排行榜

WinCE的開(kāi)發(fā)環(huán)境中支持Debug Zones功能,通常也被稱(chēng)為調(diào)試域,通過(guò)它可以控制打印信息。當(dāng)某個(gè)調(diào)試域被打開(kāi)以后,在這個(gè)域中的打印信息就會(huì)被打印出來(lái),如果某個(gè)調(diào)試域被關(guān)閉了,那么這個(gè)域中的打印信息就會(huì)被關(guān)閉。調(diào)試域是基于模塊的,也就是說(shuō)一個(gè)模塊,可能是在一個(gè)驅(qū)動(dòng)或者一個(gè)應(yīng)用中都可以定義一個(gè)調(diào)試域,用來(lái)調(diào)試該模塊。一個(gè)調(diào)試域最多可以包括16個(gè)域,一般在每一個(gè)模塊中都會(huì)有一個(gè)全局變量dpCurSettings,該變量用于描述調(diào)試域的相關(guān)信息,它由一個(gè)模塊名字,16個(gè)域的名字和一個(gè)掩碼組成。下面具個(gè)例子:

DBGPARAM dpCurSettings =

{
    TEXT("PCIBUS"), {
    TEXT("Errors"),TEXT("Warnings"),TEXT("Functions"),TEXT("Initialization"),
    TEXT("Enumeration"),TEXT("Load Order"),TEXT("Resource"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),
    TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined"),TEXT("Undefined") },
    0x20

};

先來(lái)解釋一下DBGPARAM結(jié)構(gòu),該結(jié)構(gòu)在Dbgapi.h中定義,所以在定義dpCurSettings的時(shí)候還需要包含這個(gè)頭文件,該結(jié)構(gòu)定義如下:

typedef struct _DBGPARAM {

    WCHAR  lpszName[32];                    //模塊的名字

    WCHAR  rglpszZones[16][32];            //調(diào)試域的名字

    ULONG  ulZoneMask;                        //調(diào)試域的掩碼

}DBGPARAM, *LPDBGPARAM;

 

在上面的例子中可以看到,第一個(gè)是模塊的名字,叫PCIBUS。而后定義了16個(gè)域的名字,其中只用到了7個(gè)域,剩下的都定義為Undefined了。最后一個(gè)數(shù)字為域的掩碼,表示當(dāng)前哪個(gè)域是被激活的,0x20表示只有第6個(gè)域是被激活的。從上面的例子還可以看出,前7個(gè)域是有意義的,而且按照順序分別對(duì)應(yīng)17。下面針對(duì)這些域需要定義相應(yīng)Debug調(diào)試的宏定義:

#define DBGZONE_ERROR                           1

#define DBGZONE_WARNING                     2

#define DBGZONE_FUNCTION                    3

#define DBGZONE_INIT                                4

#define DBGZONE_ENUM                            5

#define DBGZONE_LOADORDER                6

#define DBGZONE_RESOURCE                    7

 

上述宏定義對(duì)應(yīng)在dpCurSettings中的7個(gè)域,然后就可以在打印信息的時(shí)候,通過(guò)這些宏定義來(lái)對(duì)應(yīng)相應(yīng)的調(diào)試域了。例如:

  1. while(1)
  2. {
  3.     if (dwFlag)
  4.     {
  5.          DEBUGMSG(DBGZONE_ERROR, (L"Error found: %d\r\n", NumDevKeys));
  6.          break;
  7.      }
  8.      else
  9.      {
  10.          DEBUGMSG(DBGZONE_WARNING, (L"Warning found\r\n"));
  11.      }
  12.      DEBUGMSG(DBGZONE_LOADORDER, (L"load in a while loop\r\n"));
  13.      Sleep(100);
  14. }
  15.  

從這段代碼可以看出,如果dpCurSettings中的掩碼定義為0x20,那么在DEBUGMSG的打印中,只有條件為DBGZONE_LOADORDER才會(huì)被打印,循環(huán)中的前兩個(gè)打印信息是不會(huì)被打印的。如果想讓上面的代碼中的所有DEBUGMSG都能打印必須設(shè)置掩碼如下:

dpCurSettings.ulZoneMask = DBGZONE_ERROR | DBGZONE_WARNING | DBGZONE_LOADORDER;

 

在一個(gè)模塊中定義了調(diào)試域,如果想在系統(tǒng)中去使用還必須注冊(cè)該調(diào)試域,需要用到的函數(shù)叫DEBUGREGISTER(..),其中要把該調(diào)試模塊的句柄作為參數(shù)傳給它。例如:

DllMain(..)

{

    switch(op)

    {

        case DLL_PROCESS_ATTACH:

            DEBUGREGISTER(hPCIBUS);

            break;

        ….

    }

}

 

完成了上述工作以后,就可以重新編譯調(diào)試的模塊,然后運(yùn)行系統(tǒng)來(lái)調(diào)試了。調(diào)試域的一個(gè)好處就是在Debug的過(guò)程中,不需要終止系統(tǒng)可以動(dòng)態(tài)的改變調(diào)試域,方便我們分析問(wèn)題。首先,我們可以基于Platform. Builder中的CE Debug Zones來(lái)調(diào)試,在VS2005的菜單中選擇Target,然后選擇CE Debug Zones,如圖:

 

然后會(huì)出現(xiàn)一個(gè)Debug Zones的窗口,在窗口彈出以后,它可能會(huì)花一點(diǎn)時(shí)間來(lái)收集當(dāng)前支持Debug Zone的模塊,如下圖:

 

該圖只是一個(gè)例子,左邊顯示了可調(diào)試的模塊,選擇serial_SMDK2410.dll這個(gè)模塊,就是S3C2410的串口驅(qū)動(dòng)模塊。在右側(cè)可以看到各個(gè)調(diào)試域及名字,用戶可以根據(jù)需要來(lái)選擇打開(kāi)和關(guān)閉相應(yīng)的調(diào)試域,最后點(diǎn)擊ApplyOK就可以了。

 

當(dāng)然,還有其他的方法來(lái)修改調(diào)試域,一種方法是使用Target Control中的zo命令來(lái)修改,Target Control將在以后介紹。還有一種方法就是通過(guò)SetDbgZone(..)函數(shù)來(lái)修改。定義如下:

BOOL SetDbgZone(DWORDdwProcid, LPVOIDlpvMod, LPVOIDbaseptr, DWORDzone, LPDBGPARAMlpdbgTgt)

    dwProcid    進(jìn)程的句柄

    lpvMod        調(diào)試模塊的句柄

    baseptr        設(shè)置為NULL

    zone            新的調(diào)試域掩碼

    lpdbgTgt      返回新的DBGPARAM結(jié)構(gòu)

 

上面對(duì)Debug Zone的定義,使用以及調(diào)試作了大致的介紹,按照上面的步驟可以給一個(gè)模塊添加調(diào)試域,注冊(cè)調(diào)試域并在系統(tǒng)運(yùn)行以后隨時(shí)更改調(diào)試域,其根本目的無(wú)非是幫助我們來(lái)調(diào)試模塊和分析問(wèn)題。一般情況下,調(diào)試域只在Debug模式下使用,但是也可以在Release模式下使用。但是有些地方需要修改,首先前面已經(jīng)介紹過(guò)Debug模式下的打印用DEBUGMSG,而Release模式下的打印應(yīng)該使用RETAILMSG函數(shù)。所以在Release模式下,打印函數(shù)應(yīng)該改為RETAILMSG函數(shù)。還有在注冊(cè)調(diào)試域的時(shí)候,不能再使用DEBUGREGISTER(..)函數(shù),而是應(yīng)該改用RETAILREGISTERZONES(..)函數(shù)。


posted on 2011-02-28 16:18 心羽 閱讀(388) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): wince
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一本久久a久久精品亚洲| 欧美日韩在线精品一区二区三区| 亚洲人成亚洲人成在线观看| 午夜在线播放视频欧美| 99这里只有久久精品视频| 久久久久久尹人网香蕉| 亚洲一卡久久| 欧美日韩国产首页在线观看| 欧美不卡三区| 亚洲无限乱码一二三四麻| 一区二区三区精品国产| 欧美韩日高清| 欧美好骚综合网| 永久免费精品影视网站| 欧美一区二区三区日韩视频| 午夜精品av| 国产精品毛片va一区二区三区| 亚洲国产老妈| 亚洲国产精品免费| 久久亚洲一区二区| 欧美v日韩v国产v| 亚洲国产精品久久91精品| 久久免费精品日本久久中文字幕| 久久久999国产| 黄网站免费久久| 久久www成人_看片免费不卡| 欧美专区福利在线| 黑人巨大精品欧美一区二区| 性久久久久久久久| 久久中文字幕导航| 亚洲风情亚aⅴ在线发布| 老司机午夜免费精品视频| 美女久久网站| 亚洲精品三级| 国产精品扒开腿爽爽爽视频| 亚洲午夜一级| 久久精品二区三区| 136国产福利精品导航| 老牛国产精品一区的观看方式| 欧美激情精品久久久久久变态| 亚洲区国产区| 欧美性色视频在线| 欧美在线视频观看| 欧美激情一区二区三区在线视频观看| 最新高清无码专区| 国产精品久久国产愉拍| 欧美亚洲免费| 亚洲国产成人高清精品| 中日韩男男gay无套| 国产精品任我爽爆在线播放| 久久激情综合网| 亚洲国产欧美一区二区三区同亚洲| 99精品视频免费在线观看| 国产精品久久国产愉拍| 久久久久亚洲综合| 亚洲精品视频一区| 久久精品成人一区二区三区| 亚洲国产二区| 国产精品久久久| 香港成人在线视频| 国产一区二区三区四区五区美女| 欧美v日韩v国产v| 亚洲网站视频| 欧美激情一区二区三区蜜桃视频| 一区二区三区 在线观看视频| 国产视频在线观看一区| 欧美精品手机在线| 久久精品亚洲一区二区| 亚洲美女在线视频| 蜜桃av一区二区| 午夜精品久久久久久久99樱桃| 激情久久综艺| 国产精品毛片大码女人| 欧美成熟视频| 久久国产免费看| 亚洲视频在线看| 亚洲电影av| 老司机亚洲精品| 欧美一区日韩一区| 亚洲视频免费在线| 亚洲毛片在线观看.| 激情国产一区二区| 国产伦精品免费视频| 欧美人妖另类| 欧美电影免费| 久久久亚洲成人| 午夜在线一区二区| 亚洲午夜精品国产| 亚洲精品一区二区三区av| 欧美成人午夜激情在线| 久久久视频精品| 欧美一区亚洲一区| 亚洲欧美日韩成人高清在线一区| 亚洲精品国偷自产在线99热| 韩国v欧美v日本v亚洲v| 国产精品人成在线观看免费| 欧美日在线观看| 欧美日韩精品免费观看视频| 欧美高清视频免费观看| 毛片一区二区| 久久综合婷婷| 久久综合狠狠综合久久综青草| 欧美一区二区三区视频免费| 午夜精品视频| 欧美在线视频一区| 久久精品夜色噜噜亚洲a∨| 欧美亚洲免费| 久久精品国产2020观看福利| 久久av资源网| 久色成人在线| 欧美理论电影网| 欧美女同视频| 欧美婷婷在线| 国产精品人人做人人爽| 国产视频欧美| 黄色成人在线网址| 亚洲国产高清高潮精品美女| 亚洲第一久久影院| 亚洲精品护士| 亚洲婷婷综合色高清在线 | 欧美精品在线一区二区三区| 欧美成熟视频| 国产精品扒开腿做爽爽爽视频 | 亚洲免费观看在线观看| 亚洲精品网站在线播放gif| 一区二区动漫| 欧美一区1区三区3区公司| 久久爱www久久做| 浪潮色综合久久天堂| 欧美激情在线狂野欧美精品| 亚洲第一综合天堂另类专| 亚洲国产午夜| 亚洲一区在线观看视频| 久久国产精品久久久久久| 久久综合久久88| 亚洲国产欧洲综合997久久| 中国成人在线视频| 久久精彩视频| 欧美日韩精品久久| 国产一区二区欧美| 亚洲欧洲一区二区在线观看| 亚洲午夜电影网| 美日韩精品视频免费看| 日韩视频在线免费| 欧美一区二区三区在线观看视频| 久久在线免费| 国产精品美女久久久| 亚洲福利视频网站| 亚洲欧美综合v| 欧美成人精品影院| 亚洲香蕉在线观看| 免费亚洲网站| 国产精品综合不卡av| 亚洲人成人一区二区在线观看| 亚洲欧美日韩精品久久| 欧美激情久久久| 欧美一区二区三区免费看| 欧美精品在线观看播放| 韩日精品中文字幕| 亚洲综合视频在线| 亚洲激情网址| 久久国产精品久久国产精品| 欧美午夜精品久久久久久浪潮| 精品电影在线观看| 欧美一区二区三区喷汁尤物| 亚洲国产另类精品专区| 久久国产毛片| 国产欧美日本| 亚洲欧美日韩中文播放| 亚洲日本中文字幕免费在线不卡| 久久精品国产欧美亚洲人人爽| 欧美视频一区二区三区在线观看| 亚洲黄色小视频| 老牛嫩草一区二区三区日本| 亚洲午夜女主播在线直播| 欧美日本三区| 亚洲人精品午夜在线观看| 久久综合亚洲社区| 久久av一区二区| 国产婷婷色综合av蜜臀av| 亚洲欧美亚洲| 亚洲天堂成人在线视频| 欧美日韩在线影院| 一区二区欧美在线| 亚洲日本理论电影| 欧美精品成人91久久久久久久| 亚洲高清一二三区| 欧美成人精品1314www| 玖玖在线精品| 亚洲日本中文字幕| 亚洲国产合集| 欧美精品在线免费| 一区二区三区精品在线| 亚洲肉体裸体xxxx137| 欧美精品一区二区三区久久久竹菊 | 久久久91精品国产| 香蕉久久夜色| 国内成+人亚洲| 玖玖精品视频| 欧美96在线丨欧|