GDB解决单步调试问题
在 GDB 中使用 step 和 next 命令分步调试程序非常的方便,但使用时可能会遇到一些问题,那么会遇到哪些问题呢?例如:
until 命令不添加参数的使用方式和 step 命令不加参数的使用效果相同,这个命令主要解决的就是程序分步调试阶段遇到循环语句,实例:
2.使用until命令调试程序:
-
程序中出现循环语句,如果过使用 step 或者 next 命令进行分步调试就会进入循环,并且只有当循环结束后才会继续向下执行。
-
在调试被调用的函数时,如果你已经获取了相关的调试信息,并且剩余的部分不再需要调试,那么继续执行就会很浪费时间。
until命令
until 命令的含义是执行到程序的指定位置,相关的命令格式和使用方式:until location
location 表示程序中的位置,可以是行号、函数名、一个地址,与 break 命令的使用方式相同。实例:
(gdb) until 16
(gdb) until func()
(gdb) until 0x1234
until 命令不添加参数的使用方式和 step 命令不加参数的使用效果相同,这个命令主要解决的就是程序分步调试阶段遇到循环语句,实例:
#include <stdio.h>
int main(void)
{
int i,a = 0;
for(i = 0;i < 50;i++)
{
a += i;
}
printf("%d\n",a);
return 0;
}
(gdb) s
9 for(i = 0;i < 50;i++)
(gdb) s
11 a += i;
(gdb) s
9 for(i = 0;i < 50;i++)
(gdb) s
11 a += i;
(gdb) s for(i = 0;i < 50;i++)
……………
2.使用until命令调试程序:
(gdb) until 13
main () at test.c:13
13 printf("%d\n",a);
finish命令
finish命令表示的含义是返回到上层函数。就是直接运行完调用函数剩余的部分,返回到上层函数。使用格式:finish
这个命令就是帮助我们解决将被调用函数的剩余部分执行完成。所有教程
- 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
- 大数据
- 云计算