共有ライブラリをロードするプログラムをデバッグしようとしています。私はメインプログラムの部分を完全にデバッグできますが、共有ライブラリではいくつか問題があります。GDBが共有ライブラリにブレークポイントを設定できない
gdb -p 70876
GNU gdb (GDB) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin15.5.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
Attaching to process 70876
Reading symbols from /usr/local/pgsql/bin/postgres...done.
0x00007fff9496a2a2 in poll() from /usr/lib/system/libsystem_kernel.dylib
(gdb) b multi_ProcessUtility
Breakpoint 1 at 0xdaa9: multi_ProcessUtility. (2 locations)
(gdb) b multi_utility.c:129
Cannot access memory at address 0xdaa9
(gdb)
したがって、メソッド名自体でブレークポイントを設定でき、指定されたポイントでプログラムが停止するという問題があります。しかし、ファイル名と行番号でブレークポイントを設定することはできません。
プログラムは、私はプロセスに取り付けられたときNo current source file.
メッセージ
とinfo source
コマンドの結果を実行して、共有ライブラリ関数で停止
私はMac OS X El Capitanで、自作のGNU GCC 6とGDB 7.11.1を使用しています。メインプログラムと共有ライブラリの両方を "-Og -ggdb -g3"フラグでコンパイルしました。