每天学点GDB 2

在一中提到GDB最最基本的用法,在本节主要讲述一下如何让GDB在断点处打印一下诊断信息,但程序执行本身不会中断。

先稍微改一改源程序

#include <stdlib.h>
#include <stdio.h>

int main(int argc, char** argv) {
  int i = 0;
  printf("hello,world\n");
  for ( i = 0; i < 20; i++ ) {
    printf("now, the seq is %d\n",i);
  }
  return 0;
}

假设要在执行期间查看i值的变化。如果是step by step的办法,具体步骤如下。

设置断点

gdb)break 8

执行程序

gdb)run

在断点处停止执行,执行如下指令显示i的值

gdb)p i

继续程序执行

gdb)continue

上述步骤会一直重复出现,如果想一次性设定后,让程序执行不因断点设置而中断,可采用下述办法。

gdb)commands

Type commands for breakpoint(s) 1, one per line.
End with a line saying just "end".
>silent
>p i
>conti
>end

输入end表示在断点处的批处理结束,再次回到gdb。

p i 表示指印i的值

conti 表示继续程序执行

gdb)run

这样每次在断点处会自动打印变量i的值,并继续执行剩下的程序。

原文地址:https://www.cnblogs.com/hseagle/p/2981447.html