Как исправить зависание в gdb в ld-linux.so.2 при запуске 32-битного исполняемого файла в 64-битной системе Ubuntu (18.04)? - PullRequest
5 голосов
/ 03 октября 2019

Я пытаюсь отладить 32-битный исполняемый файл в 64-битной системе Ubuntu. Он прекрасно запускается из командной строки, но когда я пытаюсь использовать gdb, он зависает в ld-linux.so.2. Кроме того, GDB работает для 64-разрядной версии исполняемого файла. Кто-нибудь знает, что мне следует попробовать?

Я только что заново сделал образ машины в Ubuntu 18.04.3 и установил мультибиблиотечные версии gcc и g ++.

Спасибо зааванс.

gdb <executable>
GNU gdb ...
This GDB was configured as "x86_64-linux-gnu"
...
Reading symbols from <executable>...done.
(gdb) show archi
The target architecture is set automatically (currently i386)
(gdb) break main
Breakpoint 1 at ...
(gdb) run
Starting program...
warning: Breakpoint address adjusted from 0xf7fd9be0 to 0xfffffffff7fd9be0.
...
(7 of these)
[hangs...]
[In another terminal, ran 'kill -CONT <pid>']
Program received signal SIGCONT, Continued.
0xf7fd9be0 in ?? () from /lib/ld-linux.so.2
(gdb) cont
[hangs again...]

Ответы [ 3 ]

7 голосов
/ 16 октября 2019

ОБНОВЛЕНИЕ: Эта проблема была исправлена ​​для Ubuntu в gdb версии пакета 8.1-0ubuntu3.2, поэтому в настоящее время может помочь только обновление ваших пакетов (sudo apt update && sudo apt upgrade).


ОРИГИНАЛЬНЫЙ ОТВЕТ:

@ EmployedRussian предложил в его правку на вопрос :

При понижении с gdb = 8.1-0ubuntu3.1 до gdb = 8.1-0ubuntu3 отладчик снова начал работать для меня.

Это также сработало для меня в Ubuntu 18.04.3. Вы должны выполнить следующие команды:

sudo apt install gdb=8.1-0ubuntu3  # downgrade GDB to the working version
sudo apt-mark hold gdb  # prevent upgrading (until the repository version is fixed)

Я создал отчет об ошибках для Ubuntu: https://bugs.launchpad.net/ubuntu/+source/gdb/+bug/1848200
Вы можете нажать Does this bug affect you?, если у вас есть учетная запись Ubuntu, чтобы исправить ее раньше.

1 голос
/ 05 октября 2019

Вероятно, это ошибка GDB: https://sourceware.org/bugzilla/show_bug.cgi?id=23210

Попробуйте обновить до текущей версии GDB (8.3.1). Если Ubuntu не предлагает пакет для этого, вы можете попробовать скомпилировать его самостоятельно.

0 голосов
/ 08 ноября 2019

Это теперь исправлено в 8.1-0ubuntu3.2 в бионических обновлениях: https://launchpad.net/ubuntu/+source/gdb/8.1-0ubuntu3.2

...