===== 环境搭建 ===== * 操作系统:ubuntu 14.04 * 汇编编译器:nasm * 连接器:ld * 调试器:gdb ===== 编译命令 ===== // 32位程序 nasm -f elf32 -g hello.asm -o hello.o ld -m elf_i386 -o hello_386 hello.o ./hello_386 // 64位程序 nasm -f elf64 -g hello.asm -o hello.o ld -m elf_x86_64 -o hello_64 hello.o ./hello_64 ===== 调试 ===== * gdb hello386 * b main :在main函数打断点 * r :运行到断点 * nexti :运行下一条指令 * disassemble :反汇编,看执行到那条指令了 * info registers :查看所有寄存器中的值 * x/10db 0x4000b0 :查看以某个内存地址为起点,后面10个字节的值。参考:https://blog.csdn.net/yasi_xi/article/details/7322278 {{:pasted:20190123-021040.png}}