2012-06-18 21 views
5

Estoy intentando depurar un programa de ensamblaje con gdb y Emacs. Mi problema es que, cuando intento depurar paso a paso, no muestra una flecha de puntero en la línea de ejecución actual. El código que estoy tratando de depurar es:Emacs gdb: flecha de la pantalla al depurar el ensamblado

SECTION .data    ; Section containing initialised data 

    EatMsg: db "Eat at Joe's!",10 
    EatLen: equ $-EatMsg  

SECTION .bss   ; Section containing uninitialized data 

SECTION .text   ; Section containing code 

global _start   ; Linker needs this to find the entry point! 

_start: 
    nop   ; This no-op keeps gdb happy... 
    mov eax,4  ; Specify sys_write call 
    mov ebx,1  ; Specify File Descriptor 1: Standard Output 
    mov ecx,EatMsg  ; Pass offset of the message 
    mov edx,EatLen  ; Pass the length of the message 
    int 80H   ; Make kernel call 

    MOV eax,1  ; Code for Exit Syscall 
    mov ebx,0  ; Return a code of zero 
    int 80H   ; Make kernel call 

y estoy compilando con estas líneas:

nasm -f elf -g -F stabs eatsyscall.asm -l eatsyscall.lst 
    ld -melf_i386 -o eatsyscall eatsyscall.o 

Lo que veo en Emacs es que. En esta captura de pantalla, actualmente estoy ejecutando la línea después del punto de corte y no aparece ningún puntero a esa línea. ¿Es posible tener uno? screenshot

Respuesta

0

intenta descargar nasm2.5 o el último disponible, debería funcionar

+0

Tengo exactamente el mismo problema. Uso Emacs 24 y tengo la última versión estable de NASM. Simplemente no puedo ver esa flecha ... También compilé de la misma forma que usaste usando '-g', pero nada. – caisah

1

en primer lugar, espero que estén siendo en busca de la solución, que ha sido 2 años! si es así, a continuación, intenta persuadir nasm para generar información de depuración con el enano en lugar de STAB es decir el siguiente

nasm -f elf -g -F dwarf eatsyscall.asm ... 

que parece funcionar para mí (TM)

Cuestiones relacionadas