मैं 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 में देखते हैं। इस स्क्रीनशॉट में मैं वर्तमान में ब्रेकपॉइंट के बाद लाइन निष्पादित कर रहा हूं और उस रेखा के लिए कोई सूचक नहीं दिखता है। क्या यह एक संभव है?
के लिए काम करने के लिए लगता है कि उत्पन्न करने के लिए प्रयास करें। मैं Emacs 24 का उपयोग करता हूं और नवीनतम स्थिर NASM संस्करण है। मैं बस उस तीर को नहीं देख सकता ... मैंने भी '-g' का उपयोग करके किया था, लेकिन कुछ भी नहीं। – caisah