2016-08-04 39 views
0

Wie Debugging-Symbole in NASM-Code zum Debuggen mit GDB unter Windows enthalten?Wie können Debug-Symbole in NASM-Code zum Debuggen mit GDB unter Windows eingebunden werden?

Nachdem ich einige NASM Assembly codiert habe, möchte ich es mit GDB debuggen.

I zubauen und Verbindung mit den folgenden Befehle:

nasm -f win32 insertion_sort.asm  
ld insertion_sort.obj 

jedoch GDB Ausgang (gdb a) ergibt:

Reading symbols from C:\Users\nze\Desktop\asm\sorting\insertion_sort\a.exe...(no debugging symbols found)...done. 

In dem folgenden Code I nicht _array gleichen Bezug kann:

(gdb) x/4xw _array 
No symbol table is loaded. Use the "file" command. 
(gdb) x/4xw array 
0x1: Cannot access memory at address 0x1 

Setzen Sie den Haltepunkt auch auf _exit:

(gdb) break exit 
Breakpoint 1 at 0x401464 
(gdb) run 
Starting program: C:\Users\nze\Desktop\asm\sorting\insertion_sort/insertion_sort.exe 
[New Thread 5488.0x1c7c] 
[New Thread 5488.0xc54] 
[Inferior 1 (process 5488) exited with code 01] 

GDB bewirkt, dass das Programm bis zum Ende nur laufen, wenn laufen ...

Was ist falsch?

Der Assembler-Code ist:

BITS 32 

    section .data 
_array: dd 4, 2, 8, 6, 1 
_len: equ ($ - _array)/4 

    section .text 
    global _start 
_start: 
    push ebp 
    mov ebp, esp 

    xor ecx, ecx 
_outer: 
    inc ecx 
    cmp ecx, _len  
    jge _exit 
    mov ebx, ecx 
    dec ebx 
    lea esi, [_array + ecx * 4] 
    lea edi, [_array + ebx * 4] 
_inner: 
    cmp ebx, 0 
    jl _outer 
    mov eax, [edi] 
    cmp eax, [esi] 
    jle _outer 
    xchg eax, dword [esi]   ; swap [esi] and [edi] 
    mov dword [edi], eax    
    sub esi, 4 
    sub edi, 4 
    dec ebx 
    jmp _inner 
_exit: 
    mov esp, ebp 
    pop ebp 
    ret 
+1

Mein 'nasm' sagt: _valid Debug-Formate für 'win32' Ausgabeformat sind ('*' bezeichnet default): * null null Debug format_. Wenn Sie nicht etwas anderes sagen, können Sie nicht viel tun, außer Symbole global zu machen und Disassembly zu verwenden. – Jester

+0

Würden Sie Beispielbefehle schreiben? – Mofaaz

+0

Jester, warum muss ich Symbole global machen? – Mofaaz

Antwort

-1

Sie versucht haben, sind die Debug-Informationen verfügbar für Windows (Codeansichts 8)?

$ nasm -gcv8 -f win32 -o insertion_sort.o insertion_sort.asm $ gcc -m32 -o insertion_sort.exe insertion_sort.o