启动过程中程序退出,代码为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
这没有用。我还试图改变二进制文件执行的路径,试图从不同的目录运行…还是一样。
你能帮我吗?
/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
您可能在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解决了这个问题。
相关文章:
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- pclose() 不会给我进程退出代码
- C++逗号分隔的输入数组代码过早退出
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- 链接器命令失败,macOS 上的退出代码为 1(使用 -v 查看调用)
- 为什么我的 c++ 代码在使用堆栈时以退出代码 11 结尾?
- 使用常量字符*时退出代码 139
- 你好世界在 APUE 第 7 章退出,代码为 0
- 程序显示以退出代码 0; 结束
- VSCode C++终端进程已终止,退出代码为:1
- Qt5 [make -snap] 无法正确编译:进程"/usr/bin/snap"代码 1 退出
- 错误MSB3073以代码 8 退出
- 在GDB中:在启动程序中以代码1退出.在GDB之外运行良好
- 如何修复使用代码 2 退出"CL.exe"
- Visual Studio 中 Opencv 的介绍性示例程序以代码 -1 退出.不放心
- 我怎样才能删除它?(进程 4652) 以代码 0 退出
- QtCreator:进程 jom.exe 以代码 3 退出
- 错误 MSB6006:"cmd.exe"使用代码退出
- OpenGL程序在Visual Studio 2015中以代码1退出
- 进程qmake.exe以代码2退出-第一次使用Qt和Qt Creator