Armadilloフォーラム

G3におけるリモートデバッグについて

kubo

2018年5月14日 23時17分

お世話になります。久保と申します。

Armadillo-IoT G3とATDE6(Eclipse使用)を使ったリモートデバッグについてご教授いただければと思います。
G3側に、atp-getでgdbserverをインストールし起動後、ATDE側からarm-linux-gnueabihf-gdbを実行してリモートデバッグしようとしているのですが、arm-linux-gnueabihf-gdbがない?ようで実行できません。
G3の場合はarm-linux-gnueabihf-gdbを使用することで正しいのでしょうか?正しいようでしたらどのようにしてインストールするべきでしょうか?
お手数をおかけいたしますが、よろしくお願いいたします。

コメント

中村です。

> Armadillo-IoT G3とATDE6(Eclipse使用)を使ったリモートデバッグについてご教授いただければと思います。
...
> G3の場合はarm-linux-gnueabihf-gdbを使用することで正しいのでしょうか?正しいようでしたらどのようにしてインストールするべきでしょうか?

昨晩、少し調べてみました。
ATDE6でarm-linux-gnueabihf-gdbを動かせばいいと思うのですが、
gdb-arm-linux-gnueabihというようなパッケージはないみたいですね。

自分でクロスコンパイルする必要があるのでは?
と思っています。

ちなみに、800シリーズ用のATDE5には入れてくれていました。
http://lists.atmark-techno.com/pipermail/armadillo/2013-July/009033.html

--
なかむら

中村です。

> gdb-arm-linux-gnueabihというようなパッケージはないみたいですね。

すみません。
gdb-arm-linux-gnueabih は gdb-arm-linux-gnueabihf の間違いです。

--
なかむら

ご回答ありがとうございます。大変助かります。
gdb-arm-linux-gnueabihfパッケージやはりないのですね。
ただ、gdbのクロスコンパイルの仕方が分からず・・・もう少し調べてみます。

解決しました。
gdb-7.7.1をダウンロードして、targetをarm-linux-gnueabihfとしmakeでできました。
また、その後、EclipseでNon-stop modeで実行して無事リモートデバッグ実行できました!
ありがとうございました!

中村です。

> 解決しました。
> gdb-7.7.1をダウンロードして、targetをarm-linux-gnueabihfとしmakeでできました。

私も今やっていたところでした。
Eclpseは環境を作ってないので、コマンドラインです。
ソースは最新の8.1。

必要とする人もいるかもしれないので、
ビルド手順を書いておきます。

$ sudo apt-get install libexpat1-dev
$ wget http://ftp.gnu.org/gnu/gdb/gdb-8.1.tar.gz
$ tar xvzf gdb-8.1.tar.gz
$ cd gdb-8.1
$ ./configure --target=arm-linux-gnueabihf --with-expat
$ make
$ sudo make install

/usr/localの下にインストールされます。

configureの"--with-expat"がないと、
gdbを実行してターゲットに接続したときにXMLがどーのこーのと怒られ、
また、ターゲットのプログラムを走らせると
Remote 'g' packet reply is too long (expected 168 bytes, got 328 bytes):....
と出てうまく動作させることができませんでした。
(これで1~2時間くらい、はまってました)

私が使っているATDE6では、"--with-expat"のために
libexpat1-devのインストールする必要がありました。

--
なかむら

実際にご確認いただいたようで大変恐縮です。ありがとうございます。
私が使っているATDE6では、--with-expaを付けなくても、なぜか問題でなかったので、今後問題でてくるようでしたら参考にさせていただきたいと思います。
お手数をおかけいたしました。ありがとうございます。

中村です。

> 私が使っているATDE6では、--with-expaを付けなくても、なぜか問題でなかったので、今後問題でてくるようでしたら参考にさせていただきたいと思います。

もしかしたらgdbのバージョンの違いによるものかもしれません。

久保さんがコンパイルされたのはgdb-7.7.1とのことでしたが、
これはArmadillo-IoTG3にapt-getでインストールしたものと
バージョンを合わせたということかと思っています。
root@armadillo:~# dpkg --list | grep gdbserver
ii gdbserver 7.7.1+dfsg-5 armhf GNU Debugger (remote server)

私はそこらへんは何も考えずに最新のgdbソースを取ってきてしまいました。

最後に、
まぁどうでもいいことなのかもしれませんが・・・
私の最初の投稿で 
>> 自分でクロスコンパイルする必要があるのでは?
>> と思っています。
と深く考えずに書いてしまいましたが、
ATDE6でtarget=arm-linux-gnueabihfとしてgdbをビルドするときのコンパイラは
クロスコンパイラではなくホスト(ATDE6)用コードを生成するgccなので、
(クロスコンパイラarm-linux-gnueabihf-gccを使ってarm上動作する
プログラムをビルド(生成)するということではないので)
「クロスコンパイル」という言い方は正しくはなかったかと。

--
なかむら