Use gdb

在GDB(GNU调试器)中,您可以使用以下命令来实现这些功能:

  1. 单步执行进入你感兴趣的函数:
  2. 使用step(简写为s)命令来单步执行,并进入函数内部。

  3. 单步执行跳过你不感兴趣的函数:

  4. 使用next(简写为n)命令来单步执行,但是跳过函数调用,直接执行函数体内的语句。

  5. 运行到函数末尾:

  6. 使用finish(简写为fin)命令来继续执行,直到当前函数执行完毕并返回。

  7. 打印变量或寄存器的值:

  8. 使用print(简写为p)命令来打印变量或寄存器的值。例如:p variable 打印变量 variable 的值。

  9. 扫描内存:

  10. 使用x命令来扫描内存。例如:x/nfu address,其中 n 表示扫描的单位长度,f 表示显示格式,u 表示重复次数,address 是要扫描的内存地址。例如:x/4xw &variable 扫描变量 variable 的前 4 个字(32位)的十六进制值。

  11. 查看调用栈:

  12. 使用backtrace(简写为bt)命令来查看调用栈,显示当前的函数调用关系和各函数的参数和返回地址。

  13. 设置断点:

  14. 使用break(简写为b)命令来设置断点。例如:b function 在函数 function 的第一条指令处设置断点。

  15. 设置监视点:

  16. 使用watch 命令来设置监视点,当被监视的表达式的值发生变化时,程序会停下来。例如:watch variable 监视变量 variable 的值。

这些命令可以帮助您在调试过程中控制程序的执行流程,并查看相关的变量和内存内容。您可以在GDB中使用help命令来获取更详细的帮助信息,例如help break将显示有关break命令的更多信息。

要查看断点列表和监视点列表,您可以使用以下命令:

  1. 查看断点列表:
  2. 使用info breakpoints(简写为info b)命令来查看当前已设置的断点列表。该命令将显示所有已设置的断点,包括断点编号、断点类型、断点位置等详细信息。

  3. 查看监视点列表:

  4. 使用info watchpoints(简写为info watch)命令来查看当前已设置的监视点列表。该命令将显示所有已设置的监视点,包括监视点编号、监视点类型、监视点表达式等详细信息。

这些命令将提供有关已设置的断点和监视点的信息,以便您了解当前调试会话中的各个断点和监视点。