2009年12月11日

OS 対応デバッガ

2 ちゃんねる発祥の Mona OS の開発者 higepon さんが、Mona OS のデバッグ環境を整えようと努力されているようです。

Mona OS は QEMU 上で開発されていて、QEMU は gdbstub.c というプログラムで GDB と接続し、ICE のように使うことができます。

ひげぽん OSとか作っちゃうかMona- 2009/12/08 GDB スタブを書いてみよう その1
GDB スタブを書いてみよう その2
目的

達成したいのは Mona 中のユーザープロセスのデバッグ。ユーザープロセスが出来れば Kernel は簡単だと思う。
特にユーザープロセスが死んだときにソースコード上のどこで死んだかが GDB 一発で分かるようにしたい。

弊社の JTAG デバッガ PARTNER-Jet は、まさしくこのような機能を備えていて、弊社ではそれを「OS 対応」と呼んでいます。Linux、Win CE、(T-Kernel などの各種) RTOS、などに対応しており、オプションとして購入可能です。



ユーザ空間の特定のプロセスやスレッドだけを見たい、という場合には、通常の JTAG デバッガの機能だけでは不十分です。また、OS が提供する機能を使うアプリケーションデバッガでは、いざという時、カーネル空間の中までシームレスにデバッグすることができません。そこで JTAG デバッガの OS 対応が重要になってくるわけです。

それ以外にも例えば、デバッガのプロンプトで ps とやると、まるで Linux のシェル上でコマンドを実行したかのように、現在実行中のユーザープロセスの一覧を見ることができるなど、様々な機能があります。これらの機能は、直接 JTAG デバッガが OS のデータ構造 (Linux の場合は struct task_struct) を認識・参照することで実現しています。

ユーザープロセスを見ると一口に言っても、Linux のような、デマンドページングやマルチプロセスを備えた高水準 OS が絡んでくると、一筋縄ではいきません。見たいメモリアドレスは、まだ物理ページがマッピングされてないかもしれませんし、アドレスの論物変換を行うためには、MMU を解釈しなければなりません。

弊社は早くから Linux 対応に取り組んできており、様々な技術的蓄積により、高度な Linux 対応を実現しています。

Linux デバッグ技術解説

Android の登場により、組み込み Linux システムの構成はますます多様化が進んできている現在、OS 対応の重要性や意義は、今後ますます増えてくるであろうと思われます。

ちなみに弊社の PARTNER デバッガソフトウェアも QEMU と接続が可能(今のところ ARM のみ)で、例えば QEMU の上で動く Android を、通常の JTAG ICE でターゲットと繋いだ時と同様にデバッグできます。(ET 2007 で展示していました。) もちろん OS 対応、Android 対応 (Android は独特な構成なので、通常の Linux 対応だけでは不十分なのだそうです) なども可能です。

トラックバックURL

コメントする

名前
URL
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード