启动过程中程序退出,代码为127

gdb During startup program exited with code 127

本文关键字:代码 退出 过程中 程序 启动      更新时间:2023-10-16

想在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

这没有用。我还试图改变二进制文件执行的路径,试图从不同的目录运行…还是一样。

你能帮我吗?

/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

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


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

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

这对我来说很有效:export SHELL = path

如你的情况:

出口壳=/usr/地方/sbin/测试

它可能对你有帮助。允许所有用户在gdb之前执行这样的文件。

chmod +x file 

我在centos7上遇到了同样的问题,通过安装gdb8.1解决了这个问题。