【问题标题】:why i cannot debug the free program which is build from procps package in emacs gdb-mode? [duplicate]为什么我无法在 emacs gdb-mode 中调试从 procps 包构建的免费程序? [复制]
【发布时间】:2012-08-13 02:32:26
【问题描述】:

可能重复:
gdb says “cannot open shared object file”

这个免费程序是 [procps package]: 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"

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

【问题讨论】:

  • 不要发布图片(以及不可读的图片),因为简单的文本剪切/粘贴可以传达同样多的信息(我已经问过你一次)。
  • @EmployedRussian 您可以阅读该图片,如果在新窗口中打开该图片:) 由于该图片现在嵌入在分页中,出于布局原因,如果您需要,您必须在新窗口中打开它看一个更大的:)

标签: debugging emacs gdb shared-libraries


【解决方案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,并且不是通过从shell调用其中LD_LIBRARY_PATH 已设置。环境变量不会被在设置环境变量之前启动的进程或从其他 shell 启动的进程继承。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多