汇编学习 - 额外章(用gdb调试nasm汇编程序)
对于一个程序员来说,调试是很重要的,可以节约找到bug的时间,不过以前在linux下一直是对c进行调试的,今天突然要对汇编进行调试还真不知道怎么调,特别是对linux下调试汇编程序基本没搞过。记得以前上课学masm时,用的是debug,貌似映像中对汇编挺难调试的。于是就在网上查了下在linux下调试nasm汇编程序的资料,看起来比debug简单点。 1 写和编译源文件 首先准备个hello.asm文件,这个学语言必编的程序,代码如下: section .data msg: db "hello, world", 10 len equ $-msg section .text global main main: mov edx, len mov ecx, msg mov ebx, 1 mov eax, 4 ;直接使用sys_write系统调用 int 0x80 mov ebx, 0 mov eax, 1 int 0x80 然后直接敲命令:nasm -f elf -l hello.lst -g hello.asm,-f elf是表示生产elf格式的目标文件,-g 是生产调试信息到目标文件,-l hello.lst对应的是指令和数据在段中偏移量,不要这个也可以。然后直接用命令gcc -g -o hello hello.o连接生成可执行文件,这个和c是一样的。注意在源代码中加: