Eclipse IDEを使ったリモートデバッグの方法

  • 本ブログで紹介する開発環境は、あくまでも参考情報です。Armadilloでの使用に際しては、以下の点にご注意ください。
    • 製品化用のプラットフォームとして推奨するものではありません。
    • 本ブログで紹介している環境は、Debian GNU/Linux 9 (Stretch)かつLinux-4.9を搭載しているArmadilloにのみ有効です。
    • 上記以外のバージョンを搭載しているArmadillo(Debian GNU/Linux 8 (Jessie)やLinux-3.14等)には対応していません。
    • 今後リリースされる予定のDebian "buster"での動作は現時点で不明です。

「ATDE7でEclipse IDE for C/C++ Developersを動かす」で、Eclipse IDE(以後、Eclipse)のインストールとプログラムをビルドする方法をご紹介しました。 今回は、Eclipse IDEをWindows Subsystem for Linux (以後、WSL)上にインストールして、Armadillo-IoT G3のプログラムをリモートデバッグする方法をご紹介します。

■ 前準備

 ●[PC側] WSLおよびXサーバ環境の構築

「Windows Subsystem for LinuxにArmadillo開発環境を構築するための手順」および「Windows Subsystem for LinuxとX Windowの連携」を参考にして、PCにWSLおよびXサーバ環境を構築して下さい。

 ●[PC側] Javaランタイムのインストール

WSLでEclipseを実行するには、Javaランタイムが必要です。 今回は、OpenJDKを使います。 以下のコマンドを実行して、OpenJDKをインストールして下さい。

atmark@PC-0050:~$ apt-get install openjdk-11-jdk

Javaが動作しているかどうかの確認方法は、「OpenJDKをArmadillo-640で動かす」を参考にして下さい。

 ●[PC側] Eclipseのインストール

本稿執筆時点でEclipseの最新版は、Eclipse IDE 2019-03 (https://www.eclipse.org/downloads/packages/)です。 以下のコマンドを実行して、Eclipse IDE 2019-03をダウンロードして下さい。

atmark@PC-0050:~$ wget http://ftp.yz.yamagata-u.ac.jp/pub/eclipse/technology/epp/downloads/release/2019-03/R/eclipse-cpp-2019-03-R-linux-gtk-x86_64.tar.gz

ダウンロードが完了したら、「ATDE7でEclipse IDE for C/C++ Developersを動かす」を参考にして、プロジェクトをビルドして下さい。

 ●[PC側] gdbのインストール

Armadilloフォーラムの投稿 「G3におけるリモートデバッグについて」を参考にして、ARM用クロスgdb(arm-linux-gnueabihf-gdb)をビルドして下さい。
なお本ブログでは、arm-linux-gnueabihf-gdbをビルドするために、最新版gdbソース(バージョン8.3)を使いました。

 ●[Armadillo側] gdb serverのインストール

以下のコマンドを実行してArmadilloにgdb serverをインストールして下さい。

root@armadillo:~# apt-get install gdbserver

■ リモートデバッグの準備

 ●[PC側] デバッグコンフィグレーション

[window] -> [Perspective] -> [Open Perspective]を選択して、デバッグパースペクティブを開きます。

TAG index
TAG index

デバッグパースペクティブ内の「Project Explore」ウィンドウでプロジェクト(今回はhello)を右クリックするとプルダウンメニューが開きます。

TAG index

[Debug As] -> [Debug Configurations...]をクリックするとDebug Configurations画面が開きます。

TAG index

Debug Configurations画面でGDB Hardware Debugを右クリックするとプルダウンメニューが開きますので、New Configurationsを選択します。

TAG index

DebuggerタブのGDB CommandにはARMクロスGDBのパス(上記の場合は、/usr/local/bin/arm-linux-gnueabihf-gdb)およびホスト名(ホストIPアドレス)、ポート番号を設定します。

設定が終わったら[Apply]をクリックして[Close]ボタンで画面を閉じます。

 ●[PC側] プログラムの転送

ビルドしたプログラムを適当な転送コマンドを使ってWSLからArmadilloに転送します。 以下の例ではSSHで転送しています。

atmark@PC-0050:~/eclipse-workspace/hello/Debug$ scp hello atmark@192.168.0.10:/home/atmark/
 ●[Armadillo側] gdb serverの起動

以下のコマンドでgdb serverを起動してください。

root@armadillo:/home/atmark# gdbserver 192.168.0.8:2345 ./hello
Process ./hello created; pid = 4166
Listening on port 2345

■ Eclipse IDEによるリモートデバッグ

debugボタンを押すと、デバッグが開始します。

TAG index

初期設定でmain関数の先頭にブレークポイントが設定されていますので、resumeボタンを押すとmain関数の先頭でブレークします。
ステップ実行ボタンを押すと、ソースレベルで1ステップ実行します。

TAG index

■ 補足

Eclipseソースウィンドウにソースコードが表示されない、ステップ実行すると予想外のアドレスにジャンプする等の現象が起きた場合は、[project] -> [properties]からpropertiesウィンドウを開いて、最適化オプションとデバッグオプションの設定を確認して下さい。

TAG index

TAG index

■ 注意

本ブログで紹介した開発環境は、あくまでも参考情報です。
製品化用のプラットフォームとして推奨するものではありません。
製品: 
Armadillo-IoT G3
Armadillo-IoT G3L
Armadillo-X1