GDB单步执行程序
在调试程序时,存在很多的情况需要单步运行程序,就是一行一行的执行程序。例如程序中某一个范围中的代码都需要调试,如果每行都设置断点,使用时就会很繁琐,所以可以使用单步调试程序就会很方便。单行调试程序使用的命令是 next 和 step,下面是对这两个命令的详细介绍。
next 命令格式和使用方式:
step 命令格式和使用方式:
是否跳过不含调试信息的调用函数,需要设置 step-mode。相关命令和使用方式为:
显示设置的 step-mode 可以使用命令:
next命令
单步执行程序,当 next 命令执行遇到子函数时,不会进入到子函数内,而是将子函数全部执行结束再继续单步执行下面的代码,也就是把整个子函数的执行当作为一行代码来执行。在其他调试器中相当于 step-over,作用是在同一个调用栈中移动到下一个可执行的代码行,调用器不会进入到函数体。如果当前行是函数执行的最后一行则 next 将进入到下一个栈层,并在调用函数的下一行停止。next 命令格式和使用方式:
next [count]
count 表示单步执行的次数,命令可以缩写为 n,如果在执行 count 次单步执行时,遇到一个断点或者是一个信号,单步执行会停止。实例:(gdb) next 5
连续执行五次 next 命令。step命令
单步执行程序,遇到子函数就进入到子函数中继续进行单步执行;在其他调试中相当于 step-into 命令,作用是移动到下一个可执行的代码行。如果当前是一个函数的调用,则调用器进入函数并且停止在函数中的第一行。step 可以帮助我们找到代码具体位置:函数调用和函数本体可能存在不同的文件中。。step 命令格式和使用方式:
step [count]
count 单步执行的次数。如果在执行 count 次单步执行时,遇到一个断点或者是一个信号,单步执行会停止。实例:(gdb) step 5
连续执行 5 次 step 命令。是否跳过不含调试信息的调用函数,需要设置 step-mode。相关命令和使用方式为:
set step-mode [on/off]
系统默认的参数是 off,表示执行 step 命令时跳过不含有调试信息的调用函数。如果参数设置为 on,会在函数功能入口处停止。显示设置的 step-mode 可以使用命令:
show step-mode
总结:step 命令和 next 命令的区别在于单步执行时遇到调用函数的处理情况,next 会当作一行代码处理,而 step 会进入到函数体中。其他的使用方式相同。所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算