Linuxベースの組み込みシステムで動くアプリケーションのデバッグは厄介な仕事だが、理論上はGDB(GNUデバッガ)を使えば、ゆとりで片付けられるはずである。だが実際には、そのためのGDBのセットアップがやや難関となる。現実に作業が発生するし、克服すべき技術的な障害も存在するからだ。とはいえ、当て推量に頼らずプログラムを一定の方法で系統的にデバッグすることのメリットは、この作業にかかる手間を補って余りある。この作業で生ずる困難を軽減するヒントをいくつか紹介しよう。
ターゲットプラットフォームでフル装備のGDBを動かさなくても GDBserver を使う手がある。別のマシンでGDBを実行できるようにするプログラムだ。GDBserverを使う利点は、GDBの消費するターゲットリソースのほんの一部しか消費しないことにある。デバッガの低レベルの機能(ブレークポイントの設定、ターゲットプロセッサのレジスタ操作、アプリケーションメモリの読み書き)しか実装されていないからだ。GDBserverはデバッグ対象アプリケーションの制御を奪い、開発ワークステーション上のリモートGDBからの指示を待つ。
いつものことだが、開発ワークステーションとターゲットプラットフォームでは搭載プロセッサの種類が異なる(前者がi686クラスのプロセッサなら、後者はARMやPowerPCといったところだろう)。これはワークステーションにインストールされているGDBバイナリがそのままでは使えないことを意味する。クロスターゲットデバッガが必要なのだ。つまり、GDBをソースコードから別途ビルドする必要がある。
