3

組み込みソフトウェアの開発を行っています。本来、私は 3 つの異なるアプリケーションを同時に実行しており、それらは異なる範囲の仮想アドレスで実行されることが保証されています。

App 1 は 0x10000000 - 0x20000000 で実行され、App2 は 0x20000000 - 0x30000000 で実行されます。

通常、GDB は 1 つのシンボル定義ファイルしか受け付けないようです。しかし、この場合、クラッシュすることなく 3 つの定義すべてをロードできる可能性があります。どうすればこれを達成できますか?

次に、3 つのアプリケーションすべてが同じ仮想範囲で実行されていると仮定しますが、それぞれの実行中に何かが異なります。たとえば、1 つのアドレスの場所にアドレス空間 ID が含まれているとします。これにより、その時点でどのアプリケーションがロードされているかの手がかりが得られます。 .

GDB に 3 つのシンボル定義をすべてロードし、この情報に基づいて定義を自動的に切り替えるようにするにはどうすればよいでしょうか?

4

1 に答える 1

1

やってみました

add-symbol-file app1 0x10000000
add-symbol-file app2 0x20000000
add-symbol-file app3 0x30000000

すべてのアドレスが異なり、アプリがすべて同時に読み込まれるため、「その時点でどのアプリケーションが読み込まれるかの手がかり」という意味がよくわかりません。

実際にアプリケーションが同時にロードされない場合は、GDB オーバーレイ サポートが役立つ場合があります。

于 2010-08-14T02:51:49.297 に答える