gdb简单使用

gdb常见指令

1.编译

假设文件名为hello.c

gcc -ggdb3 -Wall -o hello hello.c
  • 调试,需要在编译时加上选项-ggdb3选项
  • -Wall: 可以提示错误信息

2.进入gdb

gdb hello

3. 打断点,以源码内行号为单位

打断点:
	break 21   在第21行设置断点
	break main 在main函数处设置断点
	break test 在函数test处设置断点
代码单步执行:
	next: 跳过函数调用
	step: 跳入函数调用
汇编指令单步执行:
	si:   汇编指令级别step
	ni:   汇编指令级别next
查看寄存器:
	layout regs
	info regs
查看栈信息
	x/10x $sp :打印stack前10个元素
打印寄存器信息
	display $register name
	display $rip
程序栈参数:
	layout args
	info registers
程序栈信息:
	info frame
查看汇编:
	layout asm
	disassemble

常用寄存器

  • %rax:通常存储函数调用的返回结果,也被用在idiv (除法)和imul(乘法)命令中。
  • %rsp:指向栈顶位置。pop操作通过增大rsp的值实现出栈,push操作通过减小rsp的值实现入栈。
  • %rbp:栈帧指针,标识当前栈帧的起始位置。
  • %rdi, %rsi, %rdx, %rcx,%r8, %r9:六个寄存器用于存放函数调用时的参数,当参数少于7个时, 参数放入寄存器;7个以上时,放入栈中
  • %eax:要返回的值必须存储在%eax中(规定)
posted @ 2023-06-30 17:59  INnoVation-V2  阅读(39)  评论(0编辑  收藏  举报