2017-05-17 5 views
-2

これはUbuntuのセットアップです。要するに--add-gnu-debuglinkを使用してgdbシンボルファイルをマウントしたフォルダに保存する

、私はコマンドを使用する場合、 "objcopyを--add-gnuの-debuglinkの=/mntsymbols/binsymbol/prog.debug PROG" それは動作しないと、GDBをしながら、シンボルが見つかりません。 gdbは、prog.debugがprogと同じフォルダにある場合にのみシンボルを取得します。私は、リモートマシンからGDB>シンボル・ファイル/mntsymbols/binsymbol/prog.debug

/mntsymbolsが搭載されているフォルダを行った後 物事は動作します。 progが削除されたバイナリです。 prog.debugは、 "objcopy --only-keep-debug"を使用して作成されたprogのデバッグシンボルファイルです。

簡単なテストプログラム用にgdbシンボルサーバーをセットアップしようとしています。 sys1はgdbシンボルサーバーです。 /root/symboldir/testp1symbols/shared1.so.debug

はSYS1マウントします:/root/symboldir/testp1symbols/prog.debug SYS1: SYS1としてシンボルファイルを保持しますSYS2の/ root/symboldirを/、および私はsys2上でgdbを使ってデバッグできるはずです。 --add-gnu-debuglinkまたは他の方法でこれを達成する方法。

+0

これを試しましたか[回答](http://stackoverflow.com/a/15556670/7561577)? –

+0

この回答によれば、リモートファイルをローカルに持ち込んで使用することをお勧めします。リモートデバッグシンボルファイルを特に使いたいと思っています。また、fileコマンドでは、1つのシンボルファイルのみを読み込むことができます。共有(so)ファイルを使用していた場合、一般にプログラムは複数のシンボルファイルを必要とすることがあります。 – devdebug

+0

また、私の場合、(シンボルファイルを含む)リモートディレクトリをマウントすることは助けになりませんでした。 – devdebug

答えて

2

Documentation

GDBで--add-gnu-debuglink=prog.debugを使用し、debug-file-directory/mntsymbols/binsymbolに設定する必要があります。

これを設定した方法では、GDBはおそらくprog.debug/usr/lib/debug/mntsymbols/binsymbolに探します。これはGDB自体をstrace -e openの下で実行することで確認できます。

+0

私が--add-gnu-debuglink = prog.debugを実行したとき、私は同じディレクトリにprog.debugを保存しなければなりませんでした。そうでなければコマンドは失敗していました。それから、/ usr/lib/debugと/ mntsymbols/binsymbolのデフォルトディレクトリにprog.debugを保存しました。 gdbを使用している間は、 'debug-file-directory'を設定して、 'show debug-file-directory'を使用してください。 (これを〜/ .gdbinitにも追加しました)。しかし、まだそれはシンボルを見つけることはありません。 set debug-file-directoryを実行した後にすべてのシンボルをリロードする必要があるかもしれませんが、私はそれを読んだがコマンドを失いました。 – devdebug

+0

私はあなたが言及したstraceトリックを試していません。試して投稿します。 – devdebug

関連する問題