2012-06-18 13 views
5

मैं gdb और Emacs का उपयोग करके एक असेंबली प्रोग्राम डीबग करने का प्रयास कर रहा हूं। मेरी समस्या यह है कि, जब मैं चरण-दर-चरण डीबग करने का प्रयास करता हूं, तो यह वर्तमान निष्पादन रेखा पर एक सूचक तीर नहीं दिखाता है। कोड मैं डिबग करने के लिए कोशिश कर रहा हूँ है:Emacs gdb - डिबगिंग असेंबली

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 

और मैं इन पंक्तियों के साथ संकलन कर रहा हूँ:

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

मैं Emacs में देखते हैं। इस स्क्रीनशॉट में मैं वर्तमान में ब्रेकपॉइंट के बाद लाइन निष्पादित कर रहा हूं और उस रेखा के लिए कोई सूचक नहीं दिखता है। क्या यह एक संभव है? screenshot

उत्तर

0

nasm2.5 या नवीनतम उपलब्ध है, यह

+0

के लिए काम करने के लिए लगता है कि उत्पन्न करने के लिए प्रयास करें। मैं Emacs 24 का उपयोग करता हूं और नवीनतम स्थिर NASM संस्करण है। मैं बस उस तीर को नहीं देख सकता ... मैंने भी '-g' का उपयोग करके किया था, लेकिन कुछ भी नहीं। – caisah

1

सब से पहले काम करना चाहिए डाउनलोड करने के लिए प्रयास करें, मैं आशा है कि आप हैं अभी भी समाधान की तलाश में है, यह 2 साल कर दिया गया है! यदि आप कर रहे हैं, तो एनएएसएम मीठी बातें से मनाना बजाय बौना साथ डिबगिंग जानकारी छुरा यानी निम्नलिखित

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

मैं ठीक उसी समस्या है मुझे (टीएम)