一. Linux下gdb调试run,next,continue与step命令的区别
1. gdb调试中,常用的调试命令有run,next,continue,step命令。都有向下执行程序的功能。但是,它们在调试中所实现的调试功能还是有区别的。
2. 下面说明一下以上调试命令的区别。这里使用一段代码,对start,run,next,continue与step调试命令的使用进行说明。代码如下所示:
#include <stdio.h>
#include <string.h>
void fun(int*a, int* b);
int main(void)
{
int a = 1;
int b = 2;
fun(&a, &b);
printf("*****a: %d, b: %d\n", a, b);
return 0;
}
void fun(int* a, int* b)
{
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}`
(1) start 命令
start 命令在开启 gdb 调试之后使用,即在输入“gdb 目标程序”命令后使用。当在调试开始时,需要进行单步调试时,可以使用 start 命令开始运行程序。start 命令使用如下所示:
(2) run 命令
当在调试时需要程序自动运行到程序结束。而在这个时候可以使用 run 命令。在使用 run 命令之前,常常会在程序某个部分设置断点。如果程序已经运行到中间某个部分,这时如果执行 run 命令,则程序会从主函数 main( ) 重新开始执行。使用方法如下所示:
(3) next 命令
next 命令在调试中,一般用于程序单步调试。但是 next 命令在遇到函数调用时,不会进入函数内部执行,而是直接返回调用函数的返回。next 命令一般可以在 start 命令之后使用。
(4) continue 命令
continue 命令简写 c。在调试中使用时可以直接输入 c。continue 命令功能是从当前位置开始连续而非单步执行程序。当碰到断点处( b 命令所打的断点),如下所示:
(5) step 命令
step 命令功能是执行下一行语句,如果有函数调用则进入到函数中执行。如下所示: