2013年2月21日木曜日

Raspberry Pi のクロス開発環境 その2 デバッグ

 前回はRaspberry Pi のクロス開発環境を構築しましたが、デバッグが出来ないとやっぱりダメでしょってことで、リモートデバッグを試してみました。


 デバッグアイコンから「Debug Configurations...」を選んで・・・って思ったら、GDBを入れてなかったみたいです。


 まず、GDBをインストールして、(ついでにeclipse-rseと表示があったのでインストールしましたが、これは前回プラグイン画面でインストールしているものとかぶっているかもしれません)


 あらためて、「Debug Configurations...」で左側で「C/C++ Remote Application」を選択して、左上の新規作成ボタンを押します。右側に設定画面が表示されるので、「Main」タブで「Connectoin:」を前回作ったRaspberry Pi とのコネクションを選択して、「Search Project...」ボタンで該当プロジェクトを選択すると、「C/C++ Application:」とその下の「Remote Absolute File~」が設定されます。もし、設定されなかったり、違っているようなら、「Browse」ボタンで手動で設定します。
 「Commands to execute before application」(実行前コマンド)に
   sudo -i
   chmod +x /home/pi/workspace/HelloRaspberryPi
   gdbserver :2345 /home/pi/workspace/HelloRaspberryPi
のように、Raspberry Pi側の実行ファイルに実行権を与えて、gdbserverをポート2345で起動するようなコマンドを設定しておきます。パスの部分はプロジェクト名や実行ファイルの置き場で変わるので適宜変更して下さい。「Apply」ボタンを押して、「Debugger」タブに移ります。


 「GDB debugger:」に
   arm-linux-gnueabihf-gdb
を設定して「Apply」ボタンを押して設定を保存します。「Debug」ボタンを押すとデバッグパースティクティブに切り替わってデバッグが開始され、main関数の初めのところで停止した状態になるので、後は、ステップ実行や変数ウォッチを使ってデバッグができます。


 それと、Raspberry Pi(ターゲット)側にGDB Serverが必要です。自分のRaspberry Pi環境にはすでにインストールされていましたが、されていない場合は、
   sudo apt-get install gdbserver
で、インストールが必要だと思います。