При попытке отладить (после компиляции и компоновки) программу сборки 86-64x под названием hello_world, я получил ошибку GDB "не в исполняемом формате: формат файла не распознан".
ubuntu@ubuntu:~$ gdb hello_world
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 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".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
"/home/ubuntu/hello_world": not in executable format: File format not recognized
Я использую Ubuntu 64x OS и GDB 8.1.0 64x.
Я искал другие ответы, но не мог понять, что делать, или решение было для Mac OS.
При работе
`ubuntu@ubuntu:~$ file hello_world
Я получил
hello_world: ASCII text
Посмотрев этот ответ Я понял, что GDB не знает, что делать с этим файлом, но я не понял, как изменить формат файла.
Моя программа hello_world:
global _start
section .text
_start:
mov rax,1
mov rdi,1
mov rsi,message
mov rdx,13
syscall
mov rax,60
xor rdi,rdi
syscall
section .data
message: db "Hello, World",10
Я скомпилировал и связал, используя следующие команды:
ubuntu@ubuntu:~$ nasm -felf64 hello_world
ubuntu@ubuntu:~$ ld hello_world.o