ブログ

Armadillo-600シリーズ:GDBサーバを使ったリモートデバッグ

at_takuma.fukuda
2020年10月4日 11時28分
  • 本ブログで紹介する開発環境は、あくまでも参考情報です。Armadilloでの使用に際しては、以下の点にご注意ください。
    • 製品化用のプラットフォームとして推奨するものではありません。
    • 本ブログで紹介している環境は、Debian GNU/Linux 9 (Stretch)かつLinux-4.9を搭載しているArmadilloにて検証を実施しました。
    • 上記以外のバージョンを搭載しているArmadillo(Debian GNU/Linux 8 (Jessie)やLinux-3.14等)での動作は確認していません。

Armadilo-600シリーズは搭載したeMMCに十分な容量があるため、
開発環境や実行環境を実機上にインストールしてそのまま開発を行うセルフ開発が可能です。
しかし従来のC言語やC++言語による開発の場合、特に規模の大きなアプリケーションによる開発の場合は、開発環境と実行環境を分けたい、ステップ単位でのデバッグ実行を行いたいという需要もあるかと思います。
そこで以下のHowTo記事とフォーラム投稿を参考に、
Armadillo-600シリーズでのリモートデバッグを実現したいと思います。

GDB Serverを使う(Armadillo)

実施条件

この記事は以下の条件にて検証を実施しました。

  • 製品
    • Armadillo-640 + BT/THオプションモジュール(WLANあり)
  • リモートデバッグ環境
    • ATDE7
  • 接続手段
    • TCP/IP(WLAN)


Armadillo実機側の準備

Armadillo実機側の準備は基本的にはGDBサーバーのインストールのみです。
Armadillo実機をインターネットにした状態で以下のコマンドを実行してインストールしてください。

root@armadillo:~# apt-get install gdbserver

Armadilloがインターネットと接続できない状態であれば、
at-debian-builderでGDBサーバがインストールされたルートファイルシステムを作成して
Armadilloに書き込んで下さい。
具体的な手順は製品マニュアル・Armadillo標準ガイドなどを参照してください。
下記記事も参考となるかと思います。
x1-debian-builderを使用したルートファイルシステムの構築について

開発環境の準備

ATDEでGDBを使用するための準備を行います。
下記記事にてユーザ様よりご提示されている手順にてインストールすることが出来ます。
「G3におけるリモートデバッグについて」
インストールが完了したら以下のようにリンクファイルを作成しておきます。

[atmark@PC]$ sudo ln -s /usr/local/bin/arm-linux-gnueabihf-gdb /usr/bin/gdb


リモートデバッグの実行

開発環境でプログラムを作成し、gdbで使用できるようにコンパイルします。
テストコード(hello.c)

#include <stdio.h>
#include <stdlib.h>
int main(void){
        printf("hello,World");
        return 0;
}

以下のようにコマンド実行してコンパイルします。

[atmark@PC]$ gcc -g -O0 hello.c -o hello

「-g」オプションの指定でデバッグ情報を付加します。
「-O0」オプションの指定で最適化を行わないようにします。
最適化を行うとコードの入れ替えや削除等が行われてデバッグしにくくなる為です。

コンパイルして作成した実行ファイルをArmadilloへ配置してください。
ArmadilloでGDBサーバーを起動します。
この時、以下のものを指定します。

  • 開発環境のIPアドレス
  • リモートデバッグに使用するポート番号
  • 実行ファイルのファイルパス
root@armadillo# gdbserver 192.168.1.1:2345 ./hello
gdbserver IPアドレス;ポート番号 ファイルパス

開発環境からデバッグ実行を開始する。


まずは実行ファイルのファイルパスを指定してGDBを起動します。

[atmark@PC]$ gdb ./hello

起動すると以下のように表示されます。

GNU gdb (GDB) 8.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-pc-linux-gnu --target=arm-linux-gnueabihf".
(中略)
(gdb)

GDBサーバのIPアドレスとポート番号を指定して接続します。

(gdb)target remote 192.168.1.2:2345
target remote IPアドレス:ポート番号

GDBサーバに以下のようなメッセージが表示されたら接続成功です。

Remote debugging from host 192.168.1.1

コマンド入力でブレイクポイントを指定したりステップ実行したりできます。
実行完了したらArmadillo側のGDBサーバが終了します。
開発環境側は以下のコマンド入力でGDBを終了できます。

(gdb)q