Next: VxWorks Attach, Previous: VxWorks Connection, Up: VxWorks Remote
VxWorksターゲットに接続済みの状態で、
まだロードされていないオブジェクトをデバッグしたい場合には、
GDBのload
コマンドを使ってUNIXからVxWorksへ追加的にファイルをダウンロードすることができます。
load
コマンドの引数として指定されたオブジェクト・ファイルは、
実際には2回オープンされます。
まず、
コードをダウンロードするためにVxWorksターゲットによってオープンされ、
次にシンボル・テーブルを読み込むためにGDBによってオープンされます。
2つのシステム上のカレントな作業ディレクトリが異なると、
問題が発生します。
両方のシステムが同一のファイル・システムをNFSマウントしているのであれば、
絶対パスを使うことで問題を回避することができます。
そうでない場合は、
両方のシステム上で、
オブジェクト・ファイルが存在するディレクトリを作業ディレクトリにして、
パスを一切使わずにファイル名だけでファイルを参照するのが、
最も簡単でしょう。
例えば、
プログラムprog.oが、
VxWorksではvxpath/vw/demo/rdbに存在し、
ホストではhostpath/vw/demo/rdbに存在するとしましょう。
このプログラムをロードするには、
VxWorks上で以下のように実行します。
-> cd "vxpath/vw/demo/rdb"
GDB上では、 以下のように実行します。
(vxgdb) cd hostpath/vw/demo/rdb (vxgdb) load prog.o
GDBは次のような応答を表示します。
Reading symbol data from wherever/vw/demo/rdb/prog.o... done.
ソース・ファイルを編集して再コンパイルした後に、
load
コマンドを使ってオブジェクト・モジュールを再ロードすることもできます。
ただし、
これを行うと、
GDBはその時点で定義されているすべてのブレイクポイント、
自動表示設定、
コンビニエンス変数を削除し、
値ヒストリを初期化してしまいますので、
注意してください
(これは、
ターゲット・システムのシンボル・テーブルを参照するデバッガのデータ構造の完全性を保つために必要です)。