これでリモートデバッグの準備ができました。
最初に、デバッガのセットアップを行います。そして、準備ができたら、デバッガを使ってAndroid USBガジェットのデータを参照していきます。
KGDB over Ethernetを利用するに当たって、ターゲットボードとホストPCのIPアドレスを設定する必要があります。本稿では、次のようにIPアドレスを設定しました(表2)。
対象 | IPアドレス |
---|---|
ターゲットボード | 192.168.1.201 |
ホストPC | 192.168.1.202 |
表2 ターゲットボードとホストPCのIPアドレス |
まず、ターゲットボードのコンソール上で次のコマンドを実行します。
ifconfig eth0 192.168.1.201
続いて、ホストPC上で次のコマンドを実行します。
ifconfig eth0 192.168.1.202
正しく設定されており、通信可能な状態であるかどうかを「ping」コマンドを使って確認してみましょう。次のコマンドを、ホストPC上で実行してください。
ping -c 5 192.168.1.201
それでは、“ホストPC−ターゲットボード”間で通信を行うGDBの準備です。実は、クロスコンパイラをインストールすると、「prebuild/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb」が自動的に組み込まれていますので、特に何もする必要はありません。
今回はグラフィカルにデバッグできるように、「ddd(Data Display Debugger)」をインストールします。単にGDBのコマンドを発行するだけならば、CUIでも十分ですが、デバッグ中の変数データのグラフィカル表示はとても見やすく、便利です。dddは、以下のようにパッケージ管理より簡単にインストールできます。
sudo apt-get install ddd
まずは、以下のコマンドを実行して、dddを起動しましょう。「--debugger」で、dddで使用する「gdb」コマンドを指定します。
$ ddd --debugger prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb
すると、以下のようにdddの画面が表示されます。
dddの画面には、大きく分けて3つの枠があります。1番上はグラフィック表示用のもので、真中がソースコード表示用、1番下が「gdb」コマンド入力用のものです。
それでは、コマンド入力画面上で、リモートデバッグを開始するためのコマンドを入力します。まずは、カーネルのシンボル情報をGDBに認識させるために「file」コマンドを実行しましょう。なお、vmlinuxは、カーネル再構築時に自動的に出来上がったものを使用します。
(gdb) file vmlinux
次に、以下のコマンドを実行して、ターゲットボードのデバッグを開始します。
(gdb)target remote udp:192.168.1.201:6443
上記コマンドの引数の意味は、以下の通りです。
すると、以下のようにソースコード出力画面に「kgdb_breakpoint()」関数が表示され、ターゲットボード上のKGDBがGDBからのコマンド入力待ち状態になります。
これで準備が完了しました。これからGUI画面上に、カーネルのデータ構造を表示していきます。ちなみに、dddで出力した画像は、PostScriptファイルで出力されます。Windows環境では見ることができないかもしれませんので、Linuxの「ps2pdf」コマンドでPDFファイルに変換するとよいでしょう。コマンドの使用方法は、以下の通りです。
ps2pdf <PostScriptファイル> <出力したいPDFファイル>
Copyright © ITmedia, Inc. All Rights Reserved.