【问题标题】:gdb During startup program exited with code 127gdb 在启动期间程序以代码 127 退出
【发布时间】:2016-06-24 20:27:47
【问题描述】:

想在 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 以执行二进制文件,尝试从不同的目录运行...还是一样。

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

【问题讨论】:

  • 欢迎来到 SO。请查看minimal reproducible example
  • 你真的在“/usr/local/sbin”中构建你的程序“test”吗?在我的 ubuntu 系统上,该文件夹归 root 所有,并且需要 root 权限才能工作。您需要一个很好的理由来冒险使用 root 权限。请告诉我们你是如何编译你的程序的。您收到的错误是找不到“测试”可执行文件。所以你需要找到它,或者建造它。
  • file /usr/local/sbin/test 的输出是什么?
  • @DOUGLASO.MOEN "/usr/local/sbin" 只是我尝试过的地点之一
  • @Mark 输出为“正在从 /usr/bin/test 读取符号...(未找到调试符号)...完成。”

标签: c++ debugging gdb debian


【解决方案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 位系统上,您可能有一个指向 /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, ...

【讨论】:

  • 非常感谢!情况确实如此。没有 32 位运行时支持的 64 位系统。现在工作正常。
  • @humme1 我有同样的问题,但我的是 64 位二进制,所以上面命令的输出是[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]。有什么想法吗?
  • @PMat 您是否在 64 位 Linux 系统上运行此二进制文件?如果ld-linux-x86-64.so.2 丢失,大约什么都没有
  • @EmployedRussian。是的,我使用的是 64 位 linux,并且 /lib64/ld-linux-x86-64.so.2 存在于我的机器上。
  • @EmployedRussian 这很令人困惑,我还是安装了上面的包,现在 gdb 加载了二进制文件,但它说找不到 so 文件,即使 solib-search-path 中有文件
【解决方案2】:

这对我有用: 出口壳=路径

在你的情况下:

导出 SHELL=/usr/local/sbin/test

【讨论】:

    【解决方案3】:

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

    chmod +x file 
    

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-26
        • 1970-01-01
        • 1970-01-01
        • 2017-06-10
        • 2018-10-08
        • 1970-01-01
        • 1970-01-01
        • 2012-07-07
        相关资源
        最近更新 更多