關(guān)于WinCE的調(diào)試技術(shù)簡介之調(diào)試程序
掃描二維碼
隨時(shí)隨地手機(jī)看文章
模擬器運(yùn)行后,就可以調(diào)試程序了。使用Evc調(diào)試和VC++很類似。可以設(shè)置斷點(diǎn),點(diǎn)擊調(diào)試后就在工具欄中出現(xiàn)調(diào)試按鈕,可以進(jìn)行單步調(diào)試,查看線程和模塊信息,以及捕獲異常。
PB中啟動模擬器后,可以使用Kerneldebugger查看系統(tǒng)內(nèi)部信息。使用target control窗口進(jìn)行內(nèi)核調(diào)試。這是一個(gè)命令行模式的shell:
Welcome to the Windows CE Shell. Type ? for help.
Windows CE>
通過?命令可以查看支持的命令選項(xiàng)。可以查看系統(tǒng)進(jìn)程和線程信息,內(nèi)存信息,可以啟動新的進(jìn)程和關(guān)閉之。還可以掛起設(shè)備等。也可以在鼠標(biāo)右鍵的彈出菜單中選擇相應(yīng)的項(xiàng),通過特定窗口察看,比命令方便一些。在輸出窗口中會顯示每一個(gè)程序運(yùn)行時(shí)加載的DLL庫。
具體的調(diào)試情況需要在實(shí)踐中不斷摸索。下面我就介紹一下evc和pb中均提供的十大遠(yuǎn)程調(diào)試工具。
1.Remote File Viewer
遠(yuǎn)程文件瀏覽器。
這個(gè)工具類似于Windows Explorer,可以顯示W(wǎng)inCE目標(biāo)設(shè)備上的目錄層次和文件。通過這個(gè)工具,可以在主機(jī)和目標(biāo)機(jī)之間互傳文件,也可以刪除目標(biāo)設(shè)備上的文件。使用這個(gè)工具,方便了程序的下載和調(diào)試。
2.Remote Process Viewer
遠(yuǎn)程進(jìn)程查看工具
這 個(gè)工具可以查看WinCE上所有運(yùn)行的進(jìn)程以及它的現(xiàn)成的信息。包括進(jìn)程的名稱,PID,進(jìn)程基本優(yōu)先級,進(jìn)程的線程數(shù),進(jìn)程基地址和訪問鍵值,窗口名 稱;線程ID,線程的當(dāng)前進(jìn)程ID(因?yàn)橛械木€程需要其它的進(jìn)程來加載模塊),線程優(yōu)先級,線程訪問鍵值;模塊名稱和ID,模塊的進(jìn)程使用計(jì)數(shù),全局使用 計(jì)數(shù),基地址和大小,模塊的句柄和路徑名稱等。
在這個(gè)工具中可以看到,每個(gè)進(jìn)程的地址空間是32MB,核心進(jìn)程N(yùn)K.exe從4000 000開始,所以系統(tǒng)將第0和1兩個(gè)槽來加載當(dāng)前進(jìn)程。在WinCE4.0以前只有第0個(gè)槽?,F(xiàn)在的第1個(gè)槽用于當(dāng)前進(jìn)程使用的DLL,并且保證不和其它進(jìn)程使用的DLL發(fā)生沖突。
3.Remote Zoomin
這個(gè)工具可以抓取目標(biāo)設(shè)備的屏幕圖像,可以保存為位圖文件或到剪切板上。
4.Remote Registy Editor
遠(yuǎn)程注冊表編輯器
這個(gè)工具可以顯示主機(jī)和目標(biāo)機(jī)的注冊表,可以編輯注冊表或?qū)С鲎员?。對于查看目?biāo)設(shè)備的驅(qū)動程序配置信息很有用。網(wǎng)上也有下載WinCE下的注冊表編輯器。
5.Remote Heap Walker
遠(yuǎn)程堆查看器
這個(gè)工具可以列出目標(biāo)機(jī)上所有運(yùn)行的進(jìn)程和他們的堆的使用情況。每個(gè)進(jìn)程開始時(shí),系統(tǒng)只提供192KB的堆,且不立刻提供物理內(nèi)存。程序可以申請更大的堆。WinCE分配的堆是不能移動的,所以要頻繁的分配和釋放內(nèi)存,最好自己預(yù)先分配一個(gè)大堆,用完后釋放。
這個(gè)工具顯示每個(gè)進(jìn)程分配的堆ID,堆的塊地址和大小以及堆的創(chuàng)建標(biāo)志。HF32_DEFAULT表示是系統(tǒng)默認(rèn)創(chuàng)建的堆。塊的標(biāo)志有fixed和free兩種。前者表示不能釋放,后者表示可以釋放,這是給內(nèi)存管理單元看的 。