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