KGDBを使って、Android組み込みボードをリモートデバッグしよう!【後編】〜USBガジェットドライバをデバッグする(3)〜実践しながら学ぶ Android USBガジェットの仕組み(5)(3/4 ページ)

» 2012年04月12日 10時30分 公開
[中垣内勇祐、森崇、中谷洋一(永和システムマネジメント),@IT MONOist]

リモートデバッグする

 これでリモートデバッグの準備ができました。

 最初に、デバッガのセットアップを行います。そして、準備ができたら、デバッガを使って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

image

グラフィカルなデバッガを使用する

 それでは、“ホストPC−ターゲットボード”間で通信を行うGDBの準備です。実は、クロスコンパイラをインストールすると、「prebuild/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb」が自動的に組み込まれていますので、特に何もする必要はありません。

image

 今回はグラフィカルにデバッグできるように、「ddd(Data Display Debugger)」をインストールします。単にGDBのコマンドを発行するだけならば、CUIでも十分ですが、デバッグ中の変数データのグラフィカル表示はとても見やすく、便利です。dddは、以下のようにパッケージ管理より簡単にインストールできます。

sudo apt-get install ddd

image

ddd(Data Display Debugger)の使い方

 まずは、以下のコマンドを実行して、dddを起動しましょう。「--debugger」で、dddで使用する「gdb」コマンドを指定します。

$ ddd --debugger prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/arm-eabi-gdb

 すると、以下のようにdddの画面が表示されます。

image

 dddの画面には、大きく分けて3つの枠があります。1番上はグラフィック表示用のもので、真中がソースコード表示用、1番下が「gdb」コマンド入力用のものです。

 それでは、コマンド入力画面上で、リモートデバッグを開始するためのコマンドを入力します。まずは、カーネルのシンボル情報をGDBに認識させるために「file」コマンドを実行しましょう。なお、vmlinuxは、カーネル再構築時に自動的に出来上がったものを使用します。

(gdb) file vmlinux

 次に、以下のコマンドを実行して、ターゲットボードのデバッグを開始します。

(gdb)target remote udp:192.168.1.201:6443

 上記コマンドの引数の意味は、以下の通りです。

  • 192.168.1.201”……先ほど設定したターゲットボードのIPアドレス
  • 6443”……KGDB通信用のポート番号

 すると、以下のようにソースコード出力画面に「kgdb_breakpoint()」関数が表示され、ターゲットボード上のKGDBがGDBからのコマンド入力待ち状態になります。

image

 これで準備が完了しました。これからGUI画面上に、カーネルのデータ構造を表示していきます。ちなみに、dddで出力した画像は、PostScriptファイルで出力されます。Windows環境では見ることができないかもしれませんので、Linuxの「ps2pdf」コマンドでPDFファイルに変換するとよいでしょう。コマンドの使用方法は、以下の通りです。

ps2pdf <PostScriptファイル> <出力したいPDFファイル>

Copyright © ITmedia, Inc. All Rights Reserved.