QEMU | UbuntuのARMユーザランド + ARM Linux GDBでARM Linux Arduinoスケッチをデバッグ (2)
1つ前のエントリでARM Linux ArduinoスケッチをビルドしたWindows版Linaro ARM Linux Cross GCC 4.7の
インストールフォルダにはWindows版Linaro ARM Linux Cross GDBがあります。そこで、今度は、Linux版
GDBではなく、QEMUのLinux ARMユーザランドエミュレーションモードに組み込まれたGDBSERVER機能と、
このWindows版GDBとの組み合わせで、いつものLinux Arduinoスケッチ(sketch_jan10a.cpp.elf /dev/ttyS1
/dev/ttyS2 /dev/ttyS3)をデバッグ出来るか試してみました。この組み合わせでも、残念ながら以下の問題に
遭遇してしまいました。(もともと、これで問題を回避出来るとは思っていませんでしたが。)
* main()関数に設定したブレークポイントでは停止するが、setup()関数やloop()関数では停止しない
* 実行を開始した後、GDBから^Cキーで実行を中断させることが出来ない
(1) 起動は出来るものの、、、

(2) main()関数に設定したブレークポイントでは停止するが、setup()関数やloop()関数では停止しない。
停止しないので、最後まで実行してしまった後、スケッチが終了する。

(3) GDBから^Cキーで実行を中断させることが出来ない。
停止しないので、2回目の^Cキーに対し、GDBがデバッグ作業をギブアップするかどうか尋ねてくる。
ギブアップせずにデバッグ作業を継続すると、最後まで実行してしまった後、スケッチが終了する。
(なお、LinuxではGDB上に^Cの文字列が表示されましたが、Windowsでは表示されないようです。)

Windows側のGDBのコマンドラインは、以下のようにしました。
E:\tools\micom\Renesas\Linaro\gcc-linaro-arm-linux-gnueabihf-4.7-2013.04\bin\arm-linux-gnueabihf-gdb -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf
なお、"ubuntu:2159"の"ubuntu"は、VMware Player上のUbuntuのネットワークコンピュータ名です。Linux
コマンドプロンプトウィンドウのプロンプトが"ubuntu@ubuntu"だったり、Linuxのsamba接続がWindowsの
エクスプローラに表示される時のコンピュータ名が"UBUNTU"だったりでしたので、試してみたら使えました。
追記 : メモ
Linux Arduino互換ライブラリのソースコードをルネサスRZ/A1Lマイコン搭載のコンピューテックス社製評価
ボードCEV-RZ/A1LのCEV Linux SDK V2.00.00 arm-buildroot-linux-uclibcgnueabihf GCC 4.7.3でビルドし
(ただし、stripコマンドは実行しないようスキップさせましたが) 、同様に試してみると、Linaro ARM Linux
GDBで、共有ライブラリのシンボルが見つからないとか、ファイルが見つからないとか、色々とワーニングが
表示されてしまったものの、動かない訳では無さそうな感じでした。


追記 : メモ
KPIT GNU ARM-RZ v13.01やRenesas e2studio V2.2にもWindows版ARM Cross GDBが同梱されています。
これらのGDBはOS対応していないGDBなのですが、いつものように、ちょっと好奇心から、これらのGDBで
Linaro ARM Linux Cross GCC 4.7でビルドしたARM Linux Arduinoスケッチをデバッグ出来るか試してみま
した。結果、これらのGDBでも、まったく動かないという訳でも無さそうな感じでした。(OS内部でブレーク
した時に、何か使用上の制限が発生するのかも?)
KPIT GNU ARM-RZ v13.01に同梱されているGDBの場合
E:\tools\micom\Renesas\KPIT\GNUARM-RZ-EABI\v13.01\arm-rz-eabi\arm-rz-eabi\bin\arm-rz-eabi-gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


Renesas e2studio V2.2に同梱されているGDBの場合
E:\tools\micom\Renesas\e2v2\DebugComp\arm-rz-eabi-gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


追記 : メモ
ひょっとしたら、i586-poky-linux-uclibc GCCでビルドしたx86 Linux Arduinoスケッチも、MinGW GDBや
Cygwin GDBでデバッグ出来ないこともないかもしれない、という気がして試してみたら、はやり、動かない
という訳でも無さそうな感じでした。(OS内部でブレークした時に、何か使用上の制限が発生するのかも?)
MinGW GDBの場合
E:\tools\windows\MinGW\bin\gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


Cygwin GDBの場合
E:\tools\windows\cygwin\bin\gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


追記 : メモ
ちなみに、試した何れのWindows版GDBも、^CキーでGDBが終了してしまうようなことはありませんでした。
インストールフォルダにはWindows版Linaro ARM Linux Cross GDBがあります。そこで、今度は、Linux版
GDBではなく、QEMUのLinux ARMユーザランドエミュレーションモードに組み込まれたGDBSERVER機能と、
このWindows版GDBとの組み合わせで、いつものLinux Arduinoスケッチ(sketch_jan10a.cpp.elf /dev/ttyS1
/dev/ttyS2 /dev/ttyS3)をデバッグ出来るか試してみました。この組み合わせでも、残念ながら以下の問題に
遭遇してしまいました。(もともと、これで問題を回避出来るとは思っていませんでしたが。)
* main()関数に設定したブレークポイントでは停止するが、setup()関数やloop()関数では停止しない
* 実行を開始した後、GDBから^Cキーで実行を中断させることが出来ない
(1) 起動は出来るものの、、、

(2) main()関数に設定したブレークポイントでは停止するが、setup()関数やloop()関数では停止しない。
停止しないので、最後まで実行してしまった後、スケッチが終了する。

(3) GDBから^Cキーで実行を中断させることが出来ない。
停止しないので、2回目の^Cキーに対し、GDBがデバッグ作業をギブアップするかどうか尋ねてくる。
ギブアップせずにデバッグ作業を継続すると、最後まで実行してしまった後、スケッチが終了する。
(なお、LinuxではGDB上に^Cの文字列が表示されましたが、Windowsでは表示されないようです。)

Windows側のGDBのコマンドラインは、以下のようにしました。
E:\tools\micom\Renesas\Linaro\gcc-linaro-arm-linux-gnueabihf-4.7-2013.04\bin\arm-linux-gnueabihf-gdb -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf
なお、"ubuntu:2159"の"ubuntu"は、VMware Player上のUbuntuのネットワークコンピュータ名です。Linux
コマンドプロンプトウィンドウのプロンプトが"ubuntu@ubuntu"だったり、Linuxのsamba接続がWindowsの
エクスプローラに表示される時のコンピュータ名が"UBUNTU"だったりでしたので、試してみたら使えました。
追記 : メモ
Linux Arduino互換ライブラリのソースコードをルネサスRZ/A1Lマイコン搭載のコンピューテックス社製評価
ボードCEV-RZ/A1LのCEV Linux SDK V2.00.00 arm-buildroot-linux-uclibcgnueabihf GCC 4.7.3でビルドし
(ただし、stripコマンドは実行しないようスキップさせましたが) 、同様に試してみると、Linaro ARM Linux
GDBで、共有ライブラリのシンボルが見つからないとか、ファイルが見つからないとか、色々とワーニングが
表示されてしまったものの、動かない訳では無さそうな感じでした。


追記 : メモ
KPIT GNU ARM-RZ v13.01やRenesas e2studio V2.2にもWindows版ARM Cross GDBが同梱されています。
これらのGDBはOS対応していないGDBなのですが、いつものように、ちょっと好奇心から、これらのGDBで
Linaro ARM Linux Cross GCC 4.7でビルドしたARM Linux Arduinoスケッチをデバッグ出来るか試してみま
した。結果、これらのGDBでも、まったく動かないという訳でも無さそうな感じでした。(OS内部でブレーク
した時に、何か使用上の制限が発生するのかも?)
KPIT GNU ARM-RZ v13.01に同梱されているGDBの場合
E:\tools\micom\Renesas\KPIT\GNUARM-RZ-EABI\v13.01\arm-rz-eabi\arm-rz-eabi\bin\arm-rz-eabi-gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


Renesas e2studio V2.2に同梱されているGDBの場合
E:\tools\micom\Renesas\e2v2\DebugComp\arm-rz-eabi-gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


追記 : メモ
ひょっとしたら、i586-poky-linux-uclibc GCCでビルドしたx86 Linux Arduinoスケッチも、MinGW GDBや
Cygwin GDBでデバッグ出来ないこともないかもしれない、という気がして試してみたら、はやり、動かない
という訳でも無さそうな感じでした。(OS内部でブレークした時に、何か使用上の制限が発生するのかも?)
MinGW GDBの場合
E:\tools\windows\MinGW\bin\gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


Cygwin GDBの場合
E:\tools\windows\cygwin\bin\gdb.exe -ex="target remote ubuntu:2159" build/sketch_jan10a.cpp.elf


追記 : メモ
ちなみに、試した何れのWindows版GDBも、^CキーでGDBが終了してしまうようなことはありませんでした。
- 関連記事
-
- SHマイコン基板(SH7216) | HEWプロジェクトのArduino互換ライブラリソースをe2studioで読む (2)
- SHマイコン基板(SH7216) | HEWプロジェクトのArduino互換ライブラリソースをe2studioで読む (1)
- OSエミュレータ | Intel Galileo LinuxバイナリをWindows上でAtratusを使って実行しようとして失敗
- OSエミュレータ | LinuxバイナリをWindows上で実行するAtratusというソフトウェアを試してみた (2)
- OSエミュレータ | LinuxバイナリをWindows上で実行するAtratusというソフトウェアを試してみた→×
- QEMU | VMware Player上のUbuntuでMinGW32 GCCをapt-getしてインストールしてみた
- QEMU | ARM (Linux非対応) Insight-7.4でARM Linux Arduinoスケッチをデバッグ
- QEMU | UbuntuのARMユーザランド + ARM Linux GDBでARM Linux Arduinoスケッチをデバッグ (2)
- QEMU | UbuntuのARMユーザランド + ARM Linux GDBでARM Linux Arduinoスケッチをデバッグ→△
- QEMU | UbuntuのネイティブなGDBSERVERをインストールして動かしてみた
- QEMU | Ubuntuのchroot機能とマルチアーキテクチャ機能を使ってARM Linux Arduinoスケッチを実行
- QEMU | Ubuntuのchroot機能でCEV-RZ/A1L Linuxのルートファイルシステムをエミュレーション
- QEMU | Ubuntuのマルチアーキテクチャ機能を使ってARM Linux Arduinoスケッチを実行
- QEMU | CEV Linux SDK V2.00.00 GCC 4.7でビルドしたARM Linux ArduinoスケッチをQEMUで実行
- QEMU | Linaro ARM Linux GCC 4.7でビルドしたARM Linux ArduinoスケッチをQEMUで実行
2014/02/06 blog-entry-417 category: Arduino Lib & CrossGCC
| h o m e |