ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

调试:设置断点

2021-07-22 13:32:56  阅读:162  来源: 互联网

标签:main 行号 gdb 设置 源代码 断点 调试


程序

编写程序:

#include <stdio.h>
int main(int argc, char** argv)
{
    unsigned long long int n, sum;
    n = 1;
    sum = 0;
    while (n <= 100)
    {
        sum = sum + n;
        n = n + 1;
    }
    return 0;
}

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

# 使用 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命令替代

标签:main,行号,gdb,设置,源代码,断点,调试
来源: https://blog.csdn.net/zhizhengguan/article/details/118996528

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有