gdb 在启动过程中程序以代码 127 退出
gdb During startup program exited with code 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,尝试从不同的目录 运行... 还是一样。
你能帮我一下吗?
/bin/bash: /usr/local/sbin/test: No such file or directory
造成这种情况的常见原因有两个:
- 文件
/usr/local/sbin/test
不存在
- 该文件确实存在,是一个动态链接的可执行文件,并且它指定的 ELF 解释器不存在。
对于 #1,答案很明显:您需要一个文件来调试。
对于 #2,您可以像这样找出文件需要哪个 ELF 解释器:
readelf -l /usr/local/sbin/test | grep interpreter
在没有安装 32 位运行时支持的 64 位系统上,您可能有一个指向 /lib/ld-linux.so.2
的 32 位二进制文件。根据您使用的发行版,sudo apt-get install libc6:i386
之类的东西应该可以解决问题。
file
命令的最新版本也打印解释器:
file ./a.out
./a.out: ELF 32-bit LSB executable, ... interpreter /lib/ld-linux.so.2, ...
我在centos 7上遇到了同样的问题,通过安装gdb 8.1解决了
这对我有用:
导出 SHELL = 路径
如您的情况:
出口SHELL=/usr/local/sbin/test
可能对你有帮助。允许所有用户在 gdb 之前执行这样的文件。
chmod +x file
想在 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,尝试从不同的目录 运行... 还是一样。
你能帮我一下吗?
/bin/bash: /usr/local/sbin/test: No such file or directory
造成这种情况的常见原因有两个:
- 文件
/usr/local/sbin/test
不存在 - 该文件确实存在,是一个动态链接的可执行文件,并且它指定的 ELF 解释器不存在。
对于 #1,答案很明显:您需要一个文件来调试。
对于 #2,您可以像这样找出文件需要哪个 ELF 解释器:
readelf -l /usr/local/sbin/test | grep interpreter
在没有安装 32 位运行时支持的 64 位系统上,您可能有一个指向 /lib/ld-linux.so.2
的 32 位二进制文件。根据您使用的发行版,sudo apt-get install libc6:i386
之类的东西应该可以解决问题。
file
命令的最新版本也打印解释器:
file ./a.out
./a.out: ELF 32-bit LSB executable, ... interpreter /lib/ld-linux.so.2, ...
我在centos 7上遇到了同样的问题,通过安装gdb 8.1解决了
这对我有用: 导出 SHELL = 路径
如您的情况:
出口SHELL=/usr/local/sbin/test
可能对你有帮助。允许所有用户在 gdb 之前执行这样的文件。
chmod +x file