2007年3月15日 星期四

視覺化系統模擬與偵錯

稍早撰寫短文「透過 User-Mode-Linux 來學習核心設計」(Part I / Part II),隨後在「Intel/Marvell PXA27x的系統模擬」提出OrzLab所實做系統層面的模擬環境 (以qemu計畫的qemu-system-arm為基礎),暫定名稱為PXAemu,這些基礎建設對於嵌入式系統開發都有其價值,諸如system prototype、進階分析,以及快速軟體開發,未來我們會增加多種硬體平台的模擬。除了系統模擬器外,視覺化的呈現與偵錯能力也相當重要,在今年一月份,已經成功整合User-Mode LinuxInsight/GDB,大略的呈現如下圖:
當時開發的平台是IA32,引入User-Mode Linux的優點是可快速分析與平台無關的Linux kernel機制,諸如記憶體管理、排程,以及網路堆疊部份。另外,上週於台中一中舉辦的「深入淺出 Hello World 」系列演講第三場,已經公開展示PXAemu與gdb整合的操作,可相當便利的進行分析與偵錯,其運作畫面如下:
以上展示透過Remote GDB連線,設定中斷點於sys_execve函式,這將會觸發於首次由kernel-mode切入user-mode的時機,也就是/sbin/init程序執行之時,當然,gdb強大的命令與功能可以輔助來對kernel作更深入的追蹤,必要時也可改變其執行時期的行為,稍後我將會試著整合PXAemu與Insight/GDB。因為Insight/GDB內建的Tcl/Tk版本老舊,在Linux下對於字型處理不雅觀且不當的XIM處理也容易讓系統崩潰,所以我動手補強並加入Xft的支援,可自行取得patch

除了以上透過既有軟體組合的視覺化環境外,我正在進行一個全新的項目,以Qt4作為GUI library (盡可能減少Win32與Linux平台移植的技術議題),為PXAemu開發frontend,也著手開發相容於GDB Machine Interface的GUI Debugger,如此一來,就可以輕易更換GNU Toolchain,即使是商業版本的MontaVista Consumer Electronics Edition (mvlcee) 也得以使用。

沒有留言: