0


调试:设置断点

程序

编写程序:

#include<stdio.h>intmain(int argc,char** argv){unsignedlonglongint n, sum;
    n =1;
    sum =0;while(n <=100){
        sum = sum + n;
        n = n +1;}return0;}

将程序编译成可执行文件:

# 使用 GDB 调试某个可执行文件,该文件中必须包含必要的调试信息(比如各行代码所在的行号、包含程序中所有变量名称的列表(又称为符号表)等)。因此必须有-g# -o main:生成可执行文件main
 gcc main.cpp -o main -g

准备

启动gdb调试器调试尚未执行的程序(-q表示屏蔽免责条款)

$ gdb main -q
Reading symbols from /home/oceanstar/workspace/cpp/code/opencv_sln/main...(no debugging symbols found)...done.
(gdb)

设置断点可以在函数名和行号等上设置断点。程序运行后,到达断点就会自动暂停运行。此时可以查看该时刻的变量值、显示栈帧、重新设置端点或者重新运行等。断点命令(break)可以简写为

b

断点可以通过函数名、当前文件内的行号来设置,也可以先指定文件名在指定行号,还可以指定与暂停位置的偏移量,或者用地址来设置。
在这里插入图片描述

在这里插入图片描述

**设置好的断点可以通过

info break

确认**:

在这里插入图片描述

b 行号

显示带行号的源代码:l

  • 默认情况下,l 选项只显示 10 行源代码,如果查看后续代码,安装 Enter 回车即可
  • 注意,必须由源文件才能显示源代码,还有,切记不要将编译的二进制文件重命名

在这里插入图片描述

在第 7 行源代码处打断点: b 7
在这里插入图片描述
运行程序,遇到断点停止: r
在这里插入图片描述
查看代码中变量 n 的值: p n

(gdb) p n
$1=1# 当前 n 的值为 1,$1 表示该变量所在存储区的名称

在第 7行的基础上,在第9行打断点: b 7

在这里插入图片描述

b 函数名

在这里插入图片描述
**运行(run)**:不加参数只执行run,就会执行到了断点的位置之后暂停运行。可以简写为

r

start命令:经常遇到的一个操作是在main函数上设置断点(

b main

),然后执行到main()函数(

r

)。这个操作可以用

start

命令替代

标签:

本文转载自: https://blog.csdn.net/zhizhengguan/article/details/118996528
版权归原作者 OceanStar的学习笔记 所有, 如有侵权,请联系我们删除。

“调试:设置断点”的评论:

还没有评论