Debug-Symbole in NASM (noch einmal)
Diese Frage wurde in StackOverflow mehrmals gestellt, aber ich habe alle Antworten ausprobiert und kann NASM immer noch nicht dazu bringen, DWARF-Debugging-Symbole einzuschließen.
Ich verwende NASM 2.13.02 unter Ubuntu 18.04 64-Bit. Ich bin mir nicht sicher, ob mir noch etwas fehlt?
Falls es darauf ankommt, würde ich gerne sowohl LLDB als auch GDB verwenden.
Vielen Dank.
Hier ist mein Code:
section .bss
section .text
global _start
_start:
mov ebx, 0
mov eax, 1
int 80h
So baue und verknüpfe ich es:
nasm -g -F dwarf -f elf64 hello.asm
ld -s -o hello hello.o
Die resultierende Datei lautet:
$ ls -la hello -rwxr-xr-x 1 terry terry 352 Sep 4 18:21 hello $
Es wird versucht zu überprüfen, ob DWARF-Daten enthalten sind:
$ dwarfdump hello No DWARF information present in hello $
Ausführen unter gdb:
$ gdb ./hello
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
[... snip copyright ...]
Reading symbols from ./hello...(no debugging symbols found)...done.
(gdb)
Antworten
Ich beantworte meine eigene Frage selbst, basierend auf einem Vorschlag von @Michael Petch, der die Person war, die tatsächlich die Grundursache gefunden hat.
Das Problem war , dass ich mit ldmit -sdem Mittel „alle Streifen“, einschließlich Debug - Symbole, also ich meine eigene Anstrengung zu untergraben.
Die richtigen Befehle sollten sein:
nasm -g -F dwarf -f elf64 hello.asm
ld -o hello hello.o
Nun mit gdb:
$ gdb ./hello GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git [.. snip copyright ..] Reading symbols from ./hello...done. (gdb) b _start Breakpoint 1 at 0x400080: file hello.asm, line 7. (gdb) run Starting program: /home/terry/hello Breakpoint 1, _start () at hello.asm:7 7 xor ebx, 0 (gdb) $