我正在尝试在gdb
中运行应用程序,但似乎我对debbuger有问题。我无法以我尝试过的方式加载共享库。
库存储在/usr/local/lib64
中,环境正常:
echo $LD_LIBRARY_PATH
/usr/local/lib64:/home/user/lib
当我在gdb
中运行应用程序时,会发生以下情况:
(gdb) set solib-search-path /usr/local/lib64
(gdb) show solib-search-path The search path for loading non-absolute
shared library symbol files is /usr/local/lib64.
(gdb) info sharedlibrary No shared libraries loaded at this time.
我无法设置任何断点来调试我的应用程序,但同时app在gdb中运行正常,调试符号正在从二进制文件读取!
我猜,问题与权限有关,但不确切知道它在哪里。
为了避免任何误解,我应该注意到我的应用程序运行良好,并且访问共享库时没有任何麻烦。
答案 0 :(得分:3)
当我在gbd中运行应用程序时,会发生以下情况:
你还没有运行应用程序,所以“目前没有加载共享库”是正确的,并且预期。
您需要实际执行GDB run
命令。
<强>更新强>
我可以执行run命令,这很奇怪。
不,这不奇怪。你没有问题,一切都按预期工作。
我猜你的真正的问题是你不能在你的应用程序正在使用的共享库中设置断点。 问题的解决方案是:
gdb /path/to/app
(gdb) start
# Application stops at main.
# You can now set any breakpoint you want.
(gdb) break foo.c:123