我正在尝试使用gdb调试一些程序集,我遇到了一些问题。一旦我输入gdb,我就无法添加断点,并且文件命令似乎不起作用。确切的输出位于底部。我试过寻找答案,但似乎都没有用。我正在运行Ubuntu 17.10
main.asm中
section .text
global _start
_start:
mov ecx, string
call printStr
exit:
mov eax, 1
mov ebx, 0
int 0x80
printStr:
pusha
cmp byte [ecx], 0
je breakPrintStr
mov eax, 4
mov ebx, 2
mov edx, 1
int 0x80
add ecx, 1
jmp printStr
breakPrintStr:
popa
ret
section .data
string db 'Hello, World!',0xa,0
生成文件
file = main
compile: $(file).asm Makefile
nasm -g -f elf -F dwarf $(file).asm
ld -m elf_i386 -s -o $(file) $(file).o
rm $(file).o
chmod +x $(file)
然后我使用
启动gdbgdb main
(gdb) file main
结果
Reading symbols from main...(no debugging symbols found)...done.
和
(gdb) b _global
结果
No symbol table is loaded. Use the "file" command.
Make breakpoint pending on future shared library load? (y or [n])
答案 0 :(得分:0)
搜索后我终于明白了。 Corrected的makefile如下:
file = main
compile: $(file).asm Makefile
nasm -g -f elf -F dwarf $(file).asm
ld -m elf_i386 -o $(file) $(file).o
rm $(file).o
chmod +x $(file)