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
Есть две распространенные причины этого:
- файл
/usr/local/sbin/test
не существует - файл существует, является динамически исполняемым файлом, а указанный им интерпретатор 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.