s.tanimura-san…
2016年9月7日 18時01分
いつもお世話になっております。
谷村と申します。
JTAG ICEを用いたアプリケーションのデバッグ方法に関して、
ご質問がございます。
Linux組み込み開発は全くの素人であり、
大変恐縮ではございますが、
ご教示いただければと思います。
********************************************************************************
【やりたいこと】
アプリケーションデバッグ
(実行制御、変数の変更/参照、トレースといった基本的な事)
【環境】
Armadillo-420(linux-2.6.26-at25)。ATDE3上でコンパイル。
【経緯】
Computex製のPALMiCE3-JTAG200
(ソフトウェア:CSIDE for PALMiCE3 ARMを使用。
組込みLinux対応オプション無し、C-Shark無し)
を使用したアプリケーションのデバッグ方法について調査しており、
メーカーに問い合わせを行い、以下のような手順でできる
との回答をもらいました。
【デバッグ手順】
1.デバッグ対象のアプリケーションソースファイルをコンパイル。
デバッグ情報付オブジェクトファイル(ELF/DWARF2形式)を作成。
2.Armadillo-420にデバッグ情報付オブジェクトファイルを含んだ
イメージファイルを書き込む。
3.Armadillo-420とPALMiCE3を接続する。
デバッグ対象アプリケーションの
デバッグ情報付オブジェクトファイル(1.でコンパイルしたもの)を参照し、
CSIDEよりPALMiCE3に、デバッグ情報のみをロードする。
オブジェクトファイルはロードしない。
(ロード時、配置するアドレス(※1)を指定する。)
4.コンソール画面より、デバッグ対象アプリケーションを実行する。
5.CSIDEよりデバッグ対象アプリケーションに、
ソフトウェアブレークを掛ける。以降、CSIDEからデバッグを行う。
3.でデバッグ情報のみをPALMiCE3にロードする際に、
Armadillo-420でデバッグ対象のオブジェクトファイルが配置されているメモリ上のアドレスと、
デバッグ情報をロードするアドレス(※1)を一致させる必要があるとのことでした。
【質問】
デバッグ対象のオブジェクトファイルが配置される
メモリ上のアドレスを調べる方法はありますでしょうか?
またコンパイル時にデバッグ対象のオブジェクトファイルを配置する
メモリ上のアドレスを指定する方法はありますでしょうか?
********************************************************************************
お手数ではございますが、
ご存知の方がおられましたら、
ご教示いただけないでしょうか。
以上、宜しくお願い致します。
コメント
s.tanimura-san…
at_takashi.sasayama
2016年9月10日 12時52分
笹山です。
質問への直接的な回答にはなっていませんが、
Linux上のアプリケーションは仮想メモリ空間上で動作します。
この仮想メモリアドレスを物理アドレスに変換して、デバッグするのは一筋縄ではいかず
あまりお勧めができません。
> 【やりたいこと】
> アプリケーションデバッグ
> (実行制御、変数の変更/参照、トレースといった基本的な事)
今回、行われたい事はアプリケーションのデバッグとのことですので gdb でも実現ができると思います。
gdb の使用方法は以下の内容が参考になると思います。
Armadillo-440(Linux-3.14):gdbserverを使ってみました
https://users.atmark-techno.com/blog/615/2096
linux-3.14向けの内容ですが、linux-2.6.26 でも同様の手順となります。