How can I include debug information with nasm?

六月ゝ 毕业季﹏ 提交于 2019-12-12 16:59:54

问题


I have this source code:

;  hello.asm  a first program for nasm for Linux, Intel, gcc
;
; assemble: nasm -f elf -l hello.lst  hello.asm
; link:     gcc -o hello  hello.o
; run:          hello 
; output is:    Hello World 

    SECTION .data       ; data section
msg:    db "Hello World",10 ; the string to print, 10=cr
len:    equ $-msg       ; "$" means "here"
                ; len is a value, not an address

    SECTION .text       ; code section
        global main     ; make label available to linker 
main:               ; standard  gcc  entry point

    mov edx,len     ; arg3, length of string to print
    mov ecx,msg     ; arg2, pointer to string
    mov ebx,1       ; arg1, where to write, screen
    mov eax,4       ; write command to int 80 hex
    int 0x80        ; interrupt 80 hex, call kernel

    mov ebx,0       ; exit code, 0=normal
    mov eax,1       ; exit command to kernel
    int 0x80        ; interrupt 80 hex, call kernel

This code is taken from here.

I am running ubuntu 12.04 32-bit on VirtualBox for learning purposes.

Steps I follow are:

  • nasm -f elf -g -F stabs hello.asm
  • ld -o hello hello.o
  • gdb hello -tui

Now when I only run hello it will run fine but gdb fails to show any source code. Why? When I tryp run in gdb I will see Hello World text just fine but it does not show the source.


回答1:


It looks like stabs format doesn't work with GDB, try DWARF instead ( http://en.wikipedia.org/wiki/DWARF )

compile with

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

then in gdb type

start

then

si

you will see sources with comments so on. as Koray Tugay said there is most probably a bug in gdb.



来源:https://stackoverflow.com/questions/27747556/how-can-i-include-debug-information-with-nasm

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!