GDB не будет читать основной файл из внешней архитектуры
Я пытаюсь прочитать файл ядра ARM на своем рабочем столе Linux, но, похоже, он не может определить мой файл ядра. Есть ли способ, которым я могу указать GDB, какой тип моего основного файла?
$ file ~/daemon
./daemon: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), for GNU/Linux 2.0.0, not stripped
$ file ~/core
./core: ELF 32-bit LSB core file ARM, version 1 (SYSV), SVR4-style, from './daemon -v -v -v -v -e 10 -t foo'
$ gdb-multiarch ~/daemon ~/core
GNU gdb (GDB) 7.5-ubuntu
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from ./daemon...done.
"./core" is not a core dump: File format is ambiguous
(gdb) core-file ~/core
"./core" is not a core dump: File format is ambiguous
Платформой генерации является armv4, которую, по утверждению gdb-multiarch, она поддерживает в соответствии со списком "set Architecture".
РЕДАКТИРОВАТЬ: Чтобы уточнить, мой настольный компьютер под управлением GDB является "x86_64-linux-gnu", а именно 64-разрядная версия Intel Ubuntu.
2 ответа
Это может помочь:
$ gdb-multiarch
...
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) set gnutarget elf32-littlearm
(gdb) file daemon
...
(gdb) target core core
...
(gdb)
Следующее применимо, только если ваш рабочий стол (где вы пытаетесь запустить gdb-multiarch) - x86.
GDB является отладчиком. Таким образом, он не сможет отлаживать исполняемый файл сторонней архитектуры на настольном компьютере с архитектурой x86, поскольку вы не можете запустить код защиты на процессоре x86. Однако вы можете отлаживать его удаленно, используя gdb-сервер, который будет работать на компьютере под рукой.
Ваш настольный компьютер или x86?