2

1 つの共有ライブラリ (.so) の関数に 2 つのブレークポイントを追加gdb 7.4して実行し、プロセスにアタッチしました。

Gdb がブレークポイントにヒットし、nいくつかのステップを実行したところ、gdb は次のエラーを報告しました (太字のテキスト)。

(gdb) b [関数名]
ブレークポイント 1 at 0xf1f28a49: file ../../../../../[file name].cpp, line 167.
Breakpoint 2 at 0xf1f2dae5: file ../.. /../../../[ファイル名].cpp、60行目
。警告: 複数のブレークポイントが設定されました。
不要なブレークポイントを削除するには、「delete」コマンドを使用します。
(gdb) c
つづく。
[新規スレッド 0xcaafab90 (LWP 28480)]
[スレッド 0xcaafab90 (LWP 28480) 終了]
[新規スレッド 0xcaafab90 (LWP 29558)]
[新規スレッド 0xc8cb6b90 (LWP 29980)]
[スレッド 0xc8cb6b90 (LWP 29980) への切り替え] [

ブレークポイント]関数名] (ostr=..., clientResponse=..., httpProtocol=..., >reqType=...) at ../../../../../[ファイル名]. cpp:60
60 ../../../../../[ファイル名].cpp: そのようなファイルまたはディレクトリはありません。
in ../../../../../[ファイル名].cpp
(gdb) ni
0xf1f2daed 60 in ../../../../../[ファイル名].cpp
(gdb) n

ブレークポイント 1、[関数名] (ostr=...、clientResponse=...、httpProtocol=...、>closeConn=...、asynchResponse=...、reqType=...)
at ../../../../../[ファイル名].cpp:167
167 in ../../../../../[ファイル名].cpp
(gdb) n
警告:
ブレークポイント 0 を挿入できません
。メモリ アドレス 0x36cc6dde へのアクセス中にエラーが発生しました: 入出力エラー。

/lib/libc.so.6
(gdb)からの siglongjmp () の 0xf7082771

これは からの出力です/proc/[PID]/maps:

08048000-08146000 R-XP 00000000 08:03 293876

08146000-08150000 RW-P 000FE000 08:03 293876 08150000-099C8000 RW

-P 081500000000: 00 C29FA000 RWXP C21FA000 00:00 0 C29FA000-C29FB000 --- P C29FA000 00:00 0 ……<BR> F1E1B000-F1E24000 RW-P F1E1B000 000 00:00 0 F1E24000 - F2093000 R-XP 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030003 F2094000 --- P 0026F000 08:03 295549 .SO F2094000-F2098000 R-P 0026F000 08:03 295549 .SO F2098000-F209C000 RW-P 00273000 08:03 295549 .SO F209C000-F209D000 P209C 000P209C 000P209C000:00C














私の質問は次のとおりです。

  1. Gdb はコマンドの内部ブレークポイントの挿入に失敗しますが、テキスト セクションが にある場合にniアドレスにアクセスしようとするのはなぜですか?ご覧のとおり、そのアドレスはマップの出力に含まれていません。0x36cc6dde0xf1******

  2. より一般的な質問ですが、共有ライブラリは から始まると言われまし0x40000000たが、なぜ私の環境ではそうではないのでしょうか?

共有ライブラリは でコンパイルされ-fPICます。上記のトレースでは、いくつかのシンボル名を隠しています。

4

1 に答える 1

-2

これはおそらくhttp://sourceware.org/bugzilla/show_bug.cgi?id=13987に関連しています。最新の FSF GDB HEAD を試してみてください (git://sourceware.org/git/gdb.git から入手できます)。

于 2012-09-24T06:19:43.807 に答える