Debugging 为什么我不能调试在emacs-gdb模式下从procps包构建的免费程序?

Debugging 为什么我不能调试在emacs-gdb模式下从procps包构建的免费程序?,debugging,emacs,gdb,shared-libraries,Debugging,Emacs,Gdb,Shared Libraries,可能重复: 此免费程序是[procps package]:提供的命令的一部分 我已经设置了LD\u LIBRARY\u PATH=/home/hugemow/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

可能重复:

此免费程序是[procps package]:提供的命令的一部分

我已经设置了
LD\u LIBRARY\u PATH=/home/hugemow/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
错误刚刚出现,它显示了加载共享库时出现的错误:libproc-3.2.8.so“,

但是我已经安装了
LD_LIBRARY_PATH
,并且它在eshell中运行良好,那么我调试free命令失败的原因是什么呢?为了在emacs的gdb模式下调试free命令,我应该做什么

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

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

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

(gdb) set env LD_LIBRARY_PATH /path/to/libproc/lib
(gdb) run
我已经设置了LD\u LIBRARY\u路径


您很可能是在启动
emacs
后执行上述操作的,或者您是通过菜单或应用程序启动器启动
emacs
,而不是通过从设置了
LD\u LIBRARY\u PATH
的shell调用来启动的。环境变量不会被设置环境变量之前启动的进程继承,也不会从其他shell启动。

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