私は持っている:
- eCos OS を搭載した独自のプロトタイプ ARM ボード (Cortex-M3 ベース)
- ボードには RedBoot ブートローダーがプログラムされています
- シリアルライン(RS-232)
- ARM 用 GDB デバッガー (arm-eabi-gdb)
- ホスト OS は Windows/Cygwin および/または Linux (実際には関係ありません)
問題: GDB デバッガーがシリアル回線経由でターゲットに接続できません。
私が欲しいのは、ターゲット上のGDBスタブが生きていて動作しているかどうかを理解するために、GDBリモートプロトコルのパケットを盗聴することです.
詳細: RedBoot には、ターゲットの制御を組み込みの GDB スタブに渡すオプションがあります。RedBoot が動作していることはわかっています。これに接続して、シリアル ライン経由でコマンドを送信できます。RedBoot のマニュアルによると、GDB スタブへの切り替えは $ または + 記号 (実際には GDB リモート プロトコル パケットのプレフィックス) を入力することで行うことができます。それらのシンボルを送信すると、端末が死ぬときにうまくいくようです。しかし、RedBoot が GDB スタブをサポートするようにコンパイルされているかどうかはわかりません (理由は聞かないでください :-))。
次に、GDB デバッガーを使用してボードに接続しようとすると、次の図が表示されます (Windows の場合)。
(gdb) target remote COM3
Remote debugging using COM3
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
Ignoring packet error, continuing...
ポートは正しく、ボーレートも同様です。何にも接続されていない別のシリアルポートで同じことをしようとすると、実際には同じ出力が得られます。
私が知りたいのは、GDB スタブが何かを送り返すかどうかです。
多分そうだと直感的に思った
set verbose on
役に立ちますが、GDBのマニュアルによると、効果は非常に限られており、私の場合はそれを超えています。
デバッグ ログを有効にするマクロを使用して GDB デバッガーをコンパイルすることは可能でしょうか?