Use gdb
在GDB(GNU调试器)中,您可以使用以下命令来实现这些功能:
- 单步执行进入你感兴趣的函数:
-
使用
step
(简写为s
)命令来单步执行,并进入函数内部。 -
单步执行跳过你不感兴趣的函数:
-
使用
next
(简写为n
)命令来单步执行,但是跳过函数调用,直接执行函数体内的语句。 -
运行到函数末尾:
-
使用
finish
(简写为fin
)命令来继续执行,直到当前函数执行完毕并返回。 -
打印变量或寄存器的值:
-
使用
print
(简写为p
)命令来打印变量或寄存器的值。例如:p variable
打印变量variable
的值。 -
扫描内存:
-
使用
x
命令来扫描内存。例如:x/nfu address
,其中n
表示扫描的单位长度,f
表示显示格式,u
表示重复次数,address
是要扫描的内存地址。例如:x/4xw &variable
扫描变量variable
的前 4 个字(32位)的十六进制值。 -
查看调用栈:
-
使用
backtrace
(简写为bt
)命令来查看调用栈,显示当前的函数调用关系和各函数的参数和返回地址。 -
设置断点:
-
使用
break
(简写为b
)命令来设置断点。例如:b function
在函数function
的第一条指令处设置断点。 -
设置监视点:
- 使用
watch
命令来设置监视点,当被监视的表达式的值发生变化时,程序会停下来。例如:watch variable
监视变量variable
的值。
这些命令可以帮助您在调试过程中控制程序的执行流程,并查看相关的变量和内存内容。您可以在GDB中使用help
命令来获取更详细的帮助信息,例如help break
将显示有关break
命令的更多信息。
要查看断点列表和监视点列表,您可以使用以下命令:
- 查看断点列表:
-
使用
info breakpoints
(简写为info b
)命令来查看当前已设置的断点列表。该命令将显示所有已设置的断点,包括断点编号、断点类型、断点位置等详细信息。 -
查看监视点列表:
- 使用
info watchpoints
(简写为info watch
)命令来查看当前已设置的监视点列表。该命令将显示所有已设置的监视点,包括监视点编号、监视点类型、监视点表达式等详细信息。
这些命令将提供有关已设置的断点和监视点的信息,以便您了解当前调试会话中的各个断点和监视点。