本篇文章主要講解遠程調試工具的使用方法_第1頁
本篇文章主要講解遠程調試工具的使用方法_第2頁
本篇文章主要講解遠程調試工具的使用方法_第3頁
本篇文章主要講解遠程調試工具的使用方法_第4頁
本篇文章主要講解遠程調試工具的使用方法_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、本篇文章主要講解遠程調試工具的使用方法,并采用PB(Microsoft Platform Builder下的模擬器來試驗。一、模擬器模擬器(emulator)是PB的一部分。專用于調試在PB下創建的及。模擬器能夠在PC下模擬 CE的物理。但實際上它只不過是一個運行在CPU Ring 3級別的用戶程序。所以它的運行速度要比正常的物理平臺要慢。模擬器僅支持x86平臺,它只能調試基于"Emulator:x86"的內核和所有用x86 指令集編譯的程序。模擬器有很大的限制,這些限制使它只能運行簡單的應用程序。但是有一點是好的,操作的大多數API對于任何CPU而言都是相同的。考慮 到不

2、受CPU類型影響的簡單程序,還是可以在模擬器上調試的。在實際中我只用模擬器調試的界面。如果你想PB,用它來創建內核而又沒有實際的物理平臺來調 試,那么模擬器非常適合。但模擬器的限制也非常多,所以即使你在模擬器下調試過所有能夠調試的內核特征(feature,或者稱組件),你掌握的也不過是 冰山一角。在這里順便說一句閑話:PB包含的量和Windows CE本身的知識量加起來好比是浩瀚的海洋,比用EVC開發軟件的知識量大的多。所以如果你只會用EVC開發幾個軟件,那你仍然是Windows CE專業的一年級學生。圖一 模擬器關 于模擬器的限制:(摘自Windows CE幫助) 僅能模擬DEC 2114x

3、 網卡來提供支持,其它網卡驅動不支持。 僅能模擬FLAT顯示驅動,其它顯示驅動不支持。 不支持 不支持PC卡、硬盤、CF卡。 不支持FAT、CDFS、DVD文件格式。 不支持IEEE1394設備。 微軟推薦的使用模擬器的開發平臺的配置:1 GHZ CPU 384 MB 系統內存 500 MB 可用硬盤空間  二、創建內核并到模擬器上為了測試遠程調試工具,我們必須先使用PB v4.1創建一個內核:1. 使 用新內核向導創建內核:單擊PB的"New Platform",在"step 2"的"Available BSPs"

4、;中"EMULATOR:X86",接著在"step 3"的"Available configurations"中選擇一個預定義的內核配置,這些預定義的內核配置具有針對性。在這里我們選擇"Internet Appliance"。注意:有些預定義的內核配置附帶了外殼程序,有些沒帶。選擇之后,填寫工程名(例如Internet)和工程的保存路徑。默 認"step 4"的選項,在"step 5"中去掉所有復選框。因為我們只要內核和外殼就行了。同樣去掉"step 6"

5、中所有復選框。最后一步單擊"Done"按鈕。2. 編譯這個新內核:在菜 單"Platform"-"Settings""Environment"中,單擊"New",在彈出對話框中添加變量名"IMGRAM64"和 值"1"。然后單擊"Build""Build Platform"開始編譯。具體編譯的時間和你的機器配置有很大關系。3. 配置模擬 器:編譯成功后,單擊"Target""Config

6、ure Remote Connection",在彈出的對話框中找到"Download"下拉框,選擇"Emulator",單擊后面的"Configure",在彈出的對話 框中設置分辨率為800 X 600或640 X 480。系統內存設置為64MB。單擊"OK"后,在"Kernel"下拉框中選擇"Emulator"。單擊"OK"。4. 啟動模擬器:單擊"Target""Download Initialize"

7、。等待一會,模擬器就出來了。可以看到標準外殼的界面,也就是桌面。在PB中編寫一個應用程序并下載到模擬器:1. 在 打開了內核工程的前提下(如果剛打開PB,先打開一個內核工程)。單擊PB菜單"File""New Project or FIle"。余下的步驟我就不用多說了。和EVC一樣,添個工程名就可以編碼了。只是沒有MFC、ATL的支持。在這里選擇一個顯示"hello world"的SDK程序。然后單擊"Build""Build All"編譯程序。我一般不在PB下開發軟件。麻煩!2. 在模擬器已經

8、打開的前提下,單擊"Target""Run Programs",找到你的程序名,再單擊"Run"。在模擬器上就可以看到你的程序了。3. 關閉操作:先關閉模擬器。再單擊"Target""Disconnect"。三、遠程調試工具遠程調試工具用于在開發平臺與實際平臺間執行一些調試工作。利用遠程調試工具可以在開發平臺運行,得到實際平臺上的文件、監視實際平臺上進程或線程的狀 況、測試實際平臺上應用程序的等。一部分遠程調試工具是我們在開發應用程序時常用的,還有一部分是開發內核時常用的。對于不常用的遠程調試工

9、具,我在這里 只給予簡單的介紹。1. 遠程調用評測程序(Remote Call Profiler)遠 程調用評測程序包含評測和分析工具。利用圖形圖像顯示出你的代碼中算法的效率或者占用資源情況。遠程調用評測程序包含一系列。在你想要評測的代碼中調用這 些接口函數,然后運行你編寫的程序。遠程調用評測程序就能夠接收你編寫的程序的并記錄。最后利用圖形顯示出來。顯然這個工具我們并不常使用。尤其是開發非 性內核和軟件,加上目前的微處理速度已經很快了,對于一個軟件性能的評測的需求就淡化了。當然,你要是愿意,覺得有必要也可以一下它的接口函數,然后測一 下。我目前可沒這個時間。微軟提供了例子程序"hel

10、lo"。如果你把Windows CE安裝在C盤,那么路徑為:"C:Program FilesCommon FilesMicrosoft SharedWindows CE ToolsPlatmansdkwce410sampleshello"。我編譯了此程序并測試了一下。遠程調用評測程序顯示的圖形如圖2所示。圖二 評測圖像截圖2. 遠程文件瀏覽程序(Remote File Viewer)遠程文件瀏覽程序是最常用、最易操作的工具之一。它的作用就是向實際平臺導入或導出文件。假如我在調試一個顯示位圖的程序。位圖允許用戶自行選擇。那么要在模擬器下調試,就必須將位圖文件先導入到

11、模擬器中。模擬器打開后,運行遠程文件瀏覽程序,先彈出一個對話框,要你選擇訪問哪個平臺。如圖3所示。圖三 平臺選擇對話框選 擇"Default Device"后。主窗口就顯示出來了。如圖4所示。左邊目錄數列出的是模擬器運行的內核的所有目錄。右邊是指定目錄下的文件。工具欄最右邊是導入和導出 按鈕。這里的導入和導出是相對開發平臺而言的。接上個例子所說,要將一個位圖文件傳到模擬器中。先單擊導出按鈕(上箭頭),在彈出的對話框中選擇一個位圖 文件,確定后,這個文件就出現在遠程文件瀏覽程序的右邊文件窗口中了。導入也簡單,先選擇一個文件,再單擊導入按鈕,再選擇路徑,保存即可。圖四 遠程文件

12、瀏覽程序截圖3、遠程堆查看程序(Remote Heap Walker)顯然“Walker”不能翻譯成“查看”。你愿意怎么翻譯就怎么翻譯吧。在這里我就叫查看了,這樣容易理解。從名字就可以看出它是用來查看中每個進程使用 的堆的情況。什么是堆就不用我說了吧!堆大家都了解,但是CE下關于堆的知識也值得一說。以后我會有專門講述CE下進程、線程、和內存方面的文章發表,那 時會說的非常詳細。利用“遠程堆查看程序”能夠查看到:內核中正運行的進程的名字、ID、及使用的所有的堆的ID。如圖1所示 進程的一個堆中的首地址、結束地址、及標志(Fixed、Free) 堆中每塊(Block)的實際內容圖 1 進程列表查看

13、和使用這個工具是很簡單的事情。不過前提是你對堆有所了解。下面我說說和這個工具有關的涉及到堆的知識。CE下每個進程啟動時,系統會分配192KB 的局部堆給這個進程。要是不夠你就通過調用堆管理函數自己再分配自定義大小的堆。自己分配的堆,包括系統給你分配的堆,都由ID來標識。如圖中所示的 Heap ID。進程ID和進程名就不用說了。后面的“Flag”只有一個值“HF32_DEFAULT”,表示系統默認分配的堆。 圖中的“device.exe”,有四個都一樣。但從進程ID就可以看出這是一個進程,而不是一個應用程序的四個實例。因為列表是以堆為單 位,“device.exe”分配了四個堆,就顯示了四個。雙

14、擊列表中任何一項,彈出這個堆的包含的塊的列表。列出塊的首地址、大小、標志。我們分配了一個堆,就可以在堆中分配數組、等。這個塊就指每個分配的元 素。標志中“Fixed”表示不能釋放這個塊占據的內存空間。而“Free”則相反,表示能夠釋放這個塊占據的內存空間。看到這,也許你會有疑問,標志給 誰看的?由誰釋放啊?這涉及到內存的管理,內核的OOM組件。在以后的文章中我會做詳細的解釋。再單擊每個塊,在彈出的列表中就可以看到這個塊的具體數據了(用ASCII表示)。4、遠程內核跟蹤程序(Remote Kernel Tracker)遠程內核跟蹤程序用于跟蹤實際平臺內核的執行情況,一般使用它跟蹤內核的啟動情況,

15、搜集相關數據并在開發平臺上以圖表形式顯示出來。如圖2所示。這個程序 能夠跟蹤所有的進程和進程中的所有線程。從開始運行起跟蹤,跟蹤結束的時間由數據接收緩沖區的大小決定。緩沖區的大小從1MB到100MB,由用戶自己設 定。跟蹤內容為進程的運行、不運行,線程的運行、阻塞、睡眠。還有在線程中所有發生的同步事件。在此程序的右邊有所有能夠跟蹤的事件對應的圖標。要跟蹤一個內核的啟動情況(啟動后也能使用這個程序跟蹤所有進程、線程),先要使你要跟蹤的內核具有幾個特性。在PB菜單 “Platform”“Settings”“Build Options”中復選“Enable Event Tracking During

16、 Boot”和“Enable Profiling”。然后重新編譯整個內核。(注意PB在編譯時可能提示產生錯誤,如果出現這種情況,那就重建內核)編譯成功后,先打開遠程內核跟蹤程序,在彈出的平臺選擇對話框中(上篇文章中包含此圖)按“OK”,這時立刻單擊PB的 “Download/Initialize”調出模擬器。等待一會遠程內核跟蹤程序就將整個啟動過程中發生的所有情況記錄并顯示出來。哪個時間段線程運行 或睡眠或阻塞,包括發生了哪個中斷都記錄下來。缺點就是數據量太大。這個程序提供了查找和過濾功能。查找功能可以查找你想要找的事件,而過濾功能可以讓此 程序只記錄你想要的事件。最后還可以保存這些記錄數據。

17、保存到擴展名為“.clg”的文件中。這個工具我只能講這么多了,平時很少用到。圖 2 跟蹤情況截圖5、遠程性能監視程序(Remote Performance Monitor)這個程序的界面大家一定很熟悉了。和其它Windows操作系統中附帶的性能監視器界面非常相似。如圖3所示。操作也幾乎一樣。圖3 性能監視程序截圖它能夠監視Remote Access Server (RAS、Internet Control Message Protocol (ICMP、TCP/IP、User Datagram Protocol (UDP、Memory、Battery、System、Process、Thread。

18、6、遠程進程瀏覽程序(Remote Process Viewer)此程序共三個窗口,分別顯示當前內核中所有進程、進程中的線程、及進程中所有加載的DLL。在顯示進程的窗口中,分別顯示進程名、進程ID、基本優先級級 別、擁有的線程總數、基地址、訪問鍵值、主窗口名。在顯示線程的窗口中,分別顯示線程ID、當前進程ID、線程優先級、訪問鍵。在顯示DLL的窗口中,分 別顯示模塊名、模塊ID、當前進程使用計數、全局使用計數、基地址、大小、模塊句柄、路徑。這里要說明的是線程窗口中的“當前進程ID”。當前進程ID會 有不相同的時候,奇怪!線程窗口應該顯示當前指定進程下的所有線程,怎么會有不同的進程ID呢?因為C

19、E幫助中什么都沒說,所以請允許我設想一下:比如 “explorer.exe”,它包含的線程其中就有兩個在“當前進程ID”中顯示為進程“gwes.exe”,“gwes.exe”為圖形、窗口、事件 子系統。它負責圖形和窗口以及窗口消息。“explorer.exe”的線程在顯示窗口、收發消息時調用“Coredll.dll”(以后會具體講解此 DLL),這個DLL調用圖形、窗口、事件模塊。這些模塊實際上是驅動程序(DLL),由gwes.exe來加載、管理這些DLL。所以顯示當前進程為 “gwes.exe”。目前只能這么解釋了。圖4 進程瀏覽程序截圖7、遠程注冊表編輯程序(Remote Registry Editor)此程序和其它Windows 操作系統下的注冊表編輯器非常相似。但它能夠顯示、編譯開發平臺下的注冊表和實際平臺下的注冊表。如圖5所示。具體操作我就不多說了。CE下注冊表的限制我也曾說過了。圖5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論