我正试图从控制台开始debugging我的应用程序。
> gdb ./Geod
然后在gdb中
(gdb) run
我得到的输出:
error while loading shared libraries: libGeo.Cored.so.1: cannot open shared object file: No such file or directory
系统configuration如下:
> echo $LD_LIBRARY_PATH /home/paceholder/projects/geo/lib/debug > ls $LD_LIBRARY_PATH libGeo.Cored.so.1.0.0 libGeo.Cored.so libGeo.Cored.so.1 libGeo.Cored.so.1.0 (gdb) show solib-search-path The search path for loading non-absolute shared library symbol files is /home/paceholder/projects/geo/lib/debug.
您可以使用gdb中的set environment
命令来更改gdb用来启动您要调试的程序的环境。 从gdb中提取帮助:
(gdb) help set environment Set environment variable value to give the program. Arguments are VAR VALUE where VAR is variable name and VALUE is value. VALUES of environment variables are uninterpreted strings. This does not affect the program until the next "run" command.
LD_LIBRARY_PATH
示例:
(gdb) set environment LD_LIBRARY_PATH /home/paceholder/projects/geo/lib/debug
error while loading shared libraries: libGeo.Cored.so.1
有两个可能的原因:
export LD_LIBRARY_PATH
–GDB创建一个新的shell,并且未导出的变量不会复制到该新的shell ~/.bashrc
或者一些重新设置LD_LIBRARY_PATH
(不要这样做!) 你可以通过下面的方法来验证上面的结论是否属实:
(gdb) shell $ echo $LD_LIBRARY_PATH $ ls $LD_LIBRARY_PATH