如何为GDB加载额外的库
How to load extra libraries for GDB?
我正试图调试CUDA程序,但当我像这样启动gdb
时:
$ gdb -i=mi <program name>
$ r <program arguments>
我得到:
/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
(格式化以便于阅读(
(我正在使用m-xgdb
运行gdb(如果这很重要,那么CUDA库在.bashrc
中
export PATH="/usr/local/cuda/bin:$PATH"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
加载共享库时出错:libcudart.so.5.0
此错误与GDB无关:从GDB内部运行可执行文件时,无法找到所需的库。
export LD_LIBRARY_PATH="$LD_LIBRRAY_PATH:/usr/local/cuda/lib64">
GDB在一个新的$SHELL
中运行您的程序,所以这应该是有效的。我想知道是否与emacs有一些互动。
无论如何,这个:
(gdb) set env LD_LIBRARY_PATH /usr/local/cuda/lib64
(gdb) run
应该解决这个问题。
更新:
正如我之前提到的,ld路径设置正确
不,它不是。如果是的话,你就不会有问题了。
现在,我不知道为什么设置不正确。如果您真的想知道,可以从在emacs之外运行GDB开始(以排除可能的emacs交互(。
如果问题仍然存在,gdb show env
、shell env
、将echo "Here"
添加到您的~/.basrc
等应该可以帮助您找到问题所在。
我也遇到过这个问题。一种方法是,即使在gdb中输入show env
时LD_LIBRARY_PATH变量是正确的,但在实际执行程序时也可能不正确,因为gdb执行$SHELL -c <program>
来运行程序。将此作为测试进行尝试,从命令行运行$SHELL
,然后运行echo $LD_LIBRARY_PATH
。这是正确的吗?如果没有,那么您可能需要将它添加到您的rc中(在我的例子中是.tcshrc(。
我在Windows7上运行gdb时遇到了类似的问题。我使用MobaXterm访问Linux工具箱。我单独安装了gdbhttp://www.gnu.org/software/gdb/。我通过确保gdb能够找到Employed Russian提到的正确的.dll文件来实现它。如果你安装了MobaXterm,.dll文件应该出现在你的主目录MobaXtterm/srash/bin中。
gdb没有识别出CCD_ 13变量。对我来说,当我使用PATH变量时,它起了作用:
(gdb) set env PATH C:UsersJoshuaDocumentsMobaXtermslashbin
(gdb) run
我认为使用PATH
而不是LD_LIBRARY_PATH
可能对您有用,前提是您放置了正确的库路径。
gdb正在寻找一个库,那么为什么要关注include路径呢?您可能需要尝试将gdb选项"solib search path"设置为指向libcudart.so.5.0库的位置。
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- Gdb 未加载要在 fork 使用的源文件
- GDB 在 shell 启动时加载找不到的脚本
- GDB无法加载,因此文件和错误没有此类文件或目录
- 尝试将GDB与MPI一起使用时,自动加载会降低
- C++Linux二进制终止信号SIGKILL-为什么?(加载在GDB中)
- 没有在gdb中加载带有breakpad核心文件的符号
- gdb:在0x2aaaaaaab000添加的符号文件系统提供的 DSO 中找不到可加载的部分
- GDB:我如何找到加载符号(msymbols, psymbols, symbols)的内存总大小?
- 为什么GDB不加载libdl而不是共享库?和堆跟踪不起作用
- gdb:在添加的符号文件系统提供的编号为0x#的DSO中找不到可加载的节
- 如何防止GDB加载(大型)库的调试符号
- 如何为GDB加载额外的库