這篇要介紹的是我自己寫的一個用於監控Windows CE運行時系統狀態的工具-Windows CE Remote Process Explorer。2004年我開始從事Windows CE平台的開發,之前我對Windows CE幾乎一無所知,為了瞭解Windows CE的系統機制,我利用業餘時間寫了這個工具。到目前為止,它已經具有了相當多的功能,也幫我解決了很多工作上的問題。
簡介
如果你想監控CE下每個進程、線程的CPU使用率,或者想知道每個線程被什麼模組什麼時刻建立、線程當前的調用棧,或者想知道應用程式運行一段時間後進程堆的使用方式、記憶體片段的分布,等等,這個工具都能給你直觀的答案。
Windows CE Remote Process Explorer(以後簡稱CE Process Explorer)是一個和Mark Russinovich的Process Explorer類 似的工具,只不過它應用於Windows CE系統。CE Process Explorer通過Platform Manager和Windows CE device建立串連,正如其名字所提示的,和Windows CE的Remote File Viewer一樣,CE Process Explorer是一個Remote tool。其host端運行在PC上,通過TCP/IP等傳輸介質和device端通訊,來揭示Windows CE的運行時系統狀態。和Mark的Process Explorer側重點不同的是,CE Process Explorer是為WinCE平台的開發人員設計的,更側重於揭示系統的內部資料。 支援平台 目前CE Process Explorer支援ARM和X86(包括emulator)架構,MIPS和SH4架構我沒用過,暫時不能支援。支援的目標作業系統包括Windows CE 4.x/5.0,對Windows CE 6.0的支援正在考慮中。 介面介紹 如下圖所示,類似於Process Explorer,主介面由上下兩個View組成。上面的view顯示Process列表,下面的view可以顯示當前所選Process的Thread、Dll、Handle、Window、Heap或Memory資訊。每個View都有對應的context menu,比如在進程view中你可以殺掉一個進程,線上程View中可以查看某個線程當前的調用棧。
1,Process View。淡藍色背景的進程為非ROM模組。
2,Thread View。淡藍色背景的線程為主線程。Thread View中可以看到每個thread是由哪個模組建立的,這對問題診斷是非常有協助的。
3,Handle View。
4,DLL View。黃色背景的DLL為重定位過的DLL。
5,Window View。淡藍色背景的視窗為最上層視窗。
5,Heap View。淡藍色背景free記憶體塊。
7,Memory View。在Memory View中你可以看到整個系統的虛擬記憶體的布局,你可以找到哪些是Image檔案對應,Thread Stack、Heap在什麼地方,DLL載入在哪裡等等。
部分特色功能(Highlights)
1,顯示線程調用棧(call stack)。這是我最喜歡的功能之一。它可以在運行時顯示任意線程的調用棧,觀察線程的工作狀態。在有debug symbol的情況下,可以直接定位到原始碼行。
2,應用程式的進程堆視圖。可以讓你時刻觀察應用程式對堆的使用方式,紅色部分為片段。
3,定位異常地址(Crash Finder)。應用程式崩潰是常有的事,這個功能讓你可以從異常產生的地址直接定位到原始碼行。
Data Abort: Thread = 87809d44 Proc = 818a7b20 'INSTALLER . EXE'
AKY = 00000401 PC = 00012548 ( INSTALLER . EXE + 0x00002548 ) RA = 00012530 ( INSTALLER . EXE + 0x0
0002530 ) BVA = 16000000 FSR = 00000007