GDB Во время запуска программы выход с кодом 127

Хотел использовать gdb в качестве отладчика в Linux Debian. Пытаясь запустить двоичный файл, я получаю это:

(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 для выполнения двоичных файлов, пытался запустить из другого каталога... Все то же самое.

Не могли бы вы помочь мне с этим?

2 ответа

Решение

/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-разрядный двоичный файл, указывающий на /lib/ld-linux.so.2 в 64-разрядной системе без поддержки 32-разрядной среды выполнения. В зависимости от используемого дистрибутива, что-то вроде sudo apt-get install libc6:i386 должен сделать свое дело.

Это может вам помочь. Разрешить всем пользователям выполнять подобный файл перед gdb.

chmod +x file 

Это сработало для меня: экспорт SHELL = путь

как в вашем случае:

экспорт ОБОЛОЧКА =/usr/local/sbin/test

У меня была такая же проблема на centos7, и я решил ее, установив gdb8.1.

Другие вопросы по тегам