ターゲット:ARM CPU 組み込みLinux NFS gdbserver
PC側:Linux arm-linux-gdb
ターゲット側で不正命令(NULLポインタへの書き込み)を実行してcore dumpファイルを作成しました。
通常のLinuxPC上のプログラムであれば「gdb プログラム coreファイル」で起動すれば良いのですが、
現在はターゲット上で
gdbserver HOST:5678 プログラム名
PC上で
arm-linux-gdb プログラム名 で起動し
target remote IPアドレス:5678
この後、どうやってcore dumpファイルを読み込ませれば良いか教えてください。
target remote IPアドレス:5678 core-file NFS上のcore dumpファイル名
を読み込ませて
where
を実行してもうまくスタックトレースが表示されませんでした。
参考
ターゲット上で
gdbserver HOST:5678 プログラム名
PC上で
arm-linux-gdb プログラム名 で起動し
target remote IPアドレス:5678
b main
c
でとまった後のデバッグは問題なくできています。
また、同じプログラムをPC用にコンパイルし
gdb プログラム名 core dumpファイル名
where
を行うと問題なく不正命令を実行した関数が表示されます。
コメント(5件)
PC上で
arm-linux-gdb プログラム名 で起動し
target remote IPアドレス:5678
とした後
core-file コアファイル名
としても
GDB can't read core files on this machine.
と表示されます。
どうやればgdbserverを使用した状態でcore dumpファイルを読み込ますことができるのでしょうか?
もしソースがあれば紹介して下さい。
やはりarm上で動くarmのgdbで読み込ませないとだめでしょうか。
せめてcore dump内のアドレス情報が読めれば何とかなりそうなのですが。
※arm上で動くarmのgdbは上手く作れませんでした。
http://sourceware.org/gdb/download/onlinedocs/gdb_18.html#SEC162
から 17.5 Implementing a Remote Stub。arm だったら arm-stub.c あたりかな?