-1

可能重复:
gdb 说“无法打开共享对象文件”

这个免费程序是 [procps 包]:http://procps.sourceforge.net/procps-3.2.8.tar.gz 提供的命令一部分

我已经设置了LD_LIBRARY_PATH=/home/hugemeow/workspace/linuxc/packages/procps-3.2.8/proc,所以我可以在 eshell 中调试这个免费的命令,

Mx shell
gdb free
br main
r
// the debug works well here

但是当我尝试在 emacs 的 gdb 模式下调试时,我无法调试这个程序。

当我打

r
Enter

错误刚刚出现,它显示"error while loading shared libraries: libproc-3.2.8.so"在 emacs 的 gdb-mode 中调试 free 命令失败

但我有设置LD_LIBRARY_PATH,它在 eshell 中运行良好,那么我无法调试免费命令的原因是什么?为了在 emacs 的 gdb 模式下调试免费命令,我应该怎么做?

4

1 回答 1

1

加载共享库时出错:libproc-3.2.8.so

GDB 没有停止的原因main是因为main从未执行过。该free程序需要libproc-3.2.8.so加载,而动态链接器(负责加载它)找不到它。因此,动态加载程序甚至在程序的第一条指令执行之前就退出了程序。

必须设置环境,以便动态加载器可以找到所需的库。最简单的方法是在系统上正确安装libproc-3.2.8.so。一个稍微困难的方法是设置LD_LIBRARY_PATH通过libproc-3.2.8.so它找到的。例如:

(gdb) set env LD_LIBRARY_PATH /path/to/libproc/lib
(gdb) run

我已经设置了 LD_LIBRARY_PATH

您可能是在开始之后emacs执行了上述操作,或者您是emacs通过菜单或应用程序启动器启动的,而不是通过从LD_LIBRARY_PATH设置的 shell 中调用来启动的。环境变量不会被在设置环境变量之前启动的进程或从不同的 shell 启动的进程继承。

于 2012-08-14T06:20:07.593 回答