gdb 在启动期间程序以代码 127 退出

新手上路,请多包涵

想在 Linux Debian 中使用 gdb 作为调试器。尝试运行二进制文件我得到了这个:

 (gdb) r
Starting program: /usr/local/sbin/test
/bin/bash: /usr/local/sbin/test: No such file or directory
During startup program exited with code 127.
(gdb)

我想应该是初级的。但我搜索了很多,最常见的答案是

$ export SHELL=/bin/bash

这没有帮助。我还尝试更改 PATH 以执行二进制文件,尝试从不同的目录运行……还是一样。

你能帮我解决这个问题吗?

原文由 humme1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

/bin/bash: /usr/local/sbin/test: No such file or directory

造成这种情况的常见原因有两个:

  1. 文件 /usr/local/sbin/test 不存在
  2. 该文件确实存在,是一个动态链接的可执行文件,并且它指定的 ELF 解释器不存在。

对于#1,答案很明显:您需要一个文件来调试。

对于 #2,您可以找出文件需要的 ELF 解释器,如下所示:

 readelf -l /usr/local/sbin/test | grep interpreter

在未安装 32 位运行时支持的 64 位系统上,您可能有一个 32 位二进制文件指向 /lib/ld-linux.so.2 。根据您使用的发行版,像 sudo apt-get install libc6:i386 这样的东西应该可以解决问题。


最新版本的 file 命令也打印解释器:

 file ./a.out
./a.out: ELF 32-bit LSB executable, ... interpreter /lib/ld-linux.so.2, ...

原文由 Employed Russian 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题