2016-07-22 57 views
1

共有ライブラリをロードするプログラムをデバッグしようとしています。私はメインプログラムの部分を完全にデバッグできますが、共有ライブラリではいくつか問題があります。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"フラグでコンパイルしました。

答えて

1

gdb 6.3.50にダウングレードして問題を解決しました。

基本的に、私はmacportsからgdb-appleをインストールしました。これはgdb 6.3.50に基づいています。私はそれがgdbのバージョンに関係しているのか、gdb-appleのポートにそれが動作するようにいくつかの微調整があるかどうかはわかりません。

関連する問題