14

ARMv7ターゲットマシンとして使用しています。2.6.34.13ターゲット用 の Linux ソースをコンパイルしました。

ターゲットは、minicom を使用してシリアル ポートを介してホスト (Linux 開発マシン) に接続されます。

ターゲットに新しいカーネルがロードされ、KGDB がコマンド プロンプトで有効になります。

$ echo ttyAMA0 > /sys/module/kgdboc/parameters/kgdboc 
$ echo g > /proc/sysrq-trigger

Entering KGDB... メッセージが表示され、コマンドを待ちます。

ホスト側では、

$arm-none-linux-gnueabi-gdb vmlinux

    gdb > set remotebaud 115200
    gdb > set debug remote 1
    gdb > target remote /dev/ttyS0

この後、デフォルトでいくつかのコマンド通信が行われます。

  1. qSupportedホストからターゲットに送信されます。ただし、qSuppoted はターゲットでサポートされていないため、$#00 が返されます。同様に?HC-1コマンドが送信されましたが、適切な応答を受け取りました。

  2. しかし、qOffsetsコマンドはターゲットから応答を受け取りません。

私は vmlinux を疑います。listgdbで与えると、10行のコードが表示されず、代わりに

arch/arm/kernel/head.S : No such file or directory.

注 :: サーバーで実行されるカーネルのコンパイル。そのため、開発マシンで利用できるソースはありません。しかし、arm-gdb は head.S を探しているようです。

どんな間違いをしているのかわかりません。カーネル全体にシンボルをロードする必要があります。この点について私を導いてください。

4

2 に答える 2

1

最後に、ホストからターゲットへの通信は、回線遅延の bcos だけを確立しました。開発マシンのカーネル ソースとタイムアウトの問題との間に関係はありません。

一部のコマンドのタイムアウトの種類の問題については、シリアルポート通信ツールとして minicom の代わりに GtkTerm を使用することで解決できますqOffsetqSupported違いは GtkTerm の「回線遅延」オプションです。したがって、これが ~250 に設定されている場合、その後タイムアウト メッセージは表示されません。単に接続が確立され、デフォルトのブレークポイントで待機します。minicom でこれを与える方法を誰かが知っていれば、誰にとって"line delay"もより役立つでしょう。

はい、もちろん、list実行するコマンドのソース コードが必要です。しかし、これらのソースがなくてもデバッグできます。つまり、 と を使用しsi, btて実行できます。vmlinuxsystem.map

注:: set debug remote 1 は必要ありません。これにより、ホストからコマンドへの通信の詳細が表示されます。詳細については、set debug serial 1.

于 2013-01-16T12:23:59.457 に答える
1

kgdb が head.S を探していることはエラーではありません。ここを見ると、ソース ツリーに head.S ファイルがあることがわかります。それはすべてのアセンブラファイルです。このプラットフォーム用にアセンブラで記述されたソース ファイルがいくつかあります。

一部の命令、特にブート シーケンスやその他の「低レベル」の機能は、簡単なのでアセンブラーで記述されているため、これは正常です。

すでにコメントに書かれているように、gdb はデバッグ中にソースを参照する必要があります。デバッグ シンボルを含み、gcc を-gで実行したときに生成されるデバッグ セクションには、特にソース ファイルと行と列への「のみ」の参照があります。gcc を使用したデバッグ シンボルの詳細とリンクについては、こちらを参照してください。

kgdb が探してhead.Sいるということは、あなたが正しいことをしているという良い兆候です。利用可能なソースがある場合 (適切なバージョンの tarball を untar するのと同じくらい簡単な場合もあります)、このソース ツリー内で kgdb を実行するか、-d引数を使用して source-search-path を追加します。もちろん、開発マシン上にあります。

于 2013-01-12T07:54:49.897 に答える