我想调试一个被Main调用的SharedLib。我有SharedLib和Main的源代码。我使用选项–g3编译和链接Main和SharedLib。变量PATH和LD_LIBRARY_PATH包括/PathToSharedLib。我在FileOfSharedLib.c的NNN处设置了一个断点。
(gdb) file /PathToMain/Main
Reading symbols from /PathToMain/Main...done.
(gdb) set directories /PathToSourceOfSharedLib
(gdb) set solib-search-path /PathToSharedLib
(gdb) sharedlibrary SharedLib
No loaded shared libraries match the pattern `SharedLib`
(gdb) b FileOfSharedLib.c:NNN
No source file named FileOfSharedLib.c.
Make breakpoint pending on future shared library load? (y or [n]) y
(gdb) run
它从Main多次调用断点时,不会停止。我通过SharedLib日志中的printf语句看到了这一点。看起来gdb没有考虑SharedLib。
我检查了SharedLib和FileOfSharedLib.c:
(gdb) file /PathToSharedLib/SharedLib
Reading symbols from /PathToSharedLib/SharedLibl...done.
(gdb) b FileOfSharedLib.c:123
Breakpoint 1 at 0x43d7f: file FileOfSharedLib.c, line 123.
(gdb)
我正在运行Ubuntu 14.04.3 LTS(GNU / Linux 3.13.0-66-generic i686),使用gcc 4.8.4和gdb 7.7.1。