如何为GDB加载额外的库?

13 c++ emacs gdb cuda

我正在尝试调试CUDA程序,但是当我gdb这样启动时:

$ gdb -i=mi <program name>
$ r <program arguments>
Run Code Online (Sandbox Code Playgroud)

我越来越:

/home/wvxvw/Projects/cuda/exercise-1-udacity/cs344/HW2/hw: 
error while loading shared libraries: libcudart.so.5.0: 
cannot open shared object file: No such file or directory

Process gdb-inferior killed
Run Code Online (Sandbox Code Playgroud)

(为便于阅读而格式化)

(我正在运行gdb使用M-xgdb)如果这很重要,那么CUDA库就在.bashrc

export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
Run Code Online (Sandbox Code Playgroud)

Emp*_*ian 20

加载共享库时出错:libcudart.so.5.0

此错误与GDB无关:从GDB内部运行时,您的可执行文件无法找到所需的库.

export LD_LIBRARY_PATH ="$ LD_LIBRARY_PATH:/ usr/local/cuda/lib64"

GDB以新的方式运行你的程序$SHELL,所以应该有用.我想知道是否与emacs有一些互动.

在任何情况下,这:

(gdb) set env LD_LIBRARY_PATH /usr/local/cuda/lib64
(gdb) run
Run Code Online (Sandbox Code Playgroud)

应该解决这个问题.

更新:

正如我之前提到的那样,ld路径设置正确

不,不是.如果是的话,你就没有问题.

现在,我不知道为什么没有正确设置.如果你真的想知道,首先在emacs之外运行GDB(以排除可能的emacs交互).

如果问题仍然存在,gdb show env,shell env添加echo "Here"到您的~/.basrc等等应该可以帮助您找到事情无法正常工作的地方.