0

0

Linux下C++命令行调试实战

雪夜

雪夜

发布时间:2025-07-15 10:28:23

|

670人浏览过

|

来源于php中文网

原创

本文为该系列的第四篇文章,如果您尚未阅读前面的内容,可以通过以下链接进行查阅:

  1. Linux中使用g++工具编译C++代码及其常用操作指令

  2. Linux下C++命令行编译示例

  3. Linux下的GDB调试器常用指令

  4. 准备代码
    创建一个C++源代码文件 src/04_debug/sum.cpp,并添加以下代码:

#include 
using namespace std;

int main(int argc, char const *argv[]) {
    int N = 100;
    int sum = 0;
    int i = 1;
    while (i <= N) {
        sum += i;
        i++;
    }
    cout << "Sum of numbers from 1 to " << N << " is " << sum << endl;
    return 0;
}
  1. 进入调试模式
    在进入调试模式之前,首先需要编译源代码,具体过程如下:

普通编译方式:

立即学习C++免费学习笔记(深入)”;

g++ sum.cpp -o no_g.out

编译出用于调试的可执行文件:

g++ -g sum.cpp -o yes_g.out

使用gdb命令进行调试,如果我们尝试调试 no_g.out,将会看到以下错误提示:

Linux下C++命令行调试实战

这是因为no_g.out这个可执行文件不包含调试信息。输入quit并按回车即可退出。通过gdb yes_g.out指令执行包含调试信息的可执行文件,可以看到以下输出:

Linux下C++命令行调试实战

此时可以正常进入调试模式。

  1. 调试过程
    直接执行程序:
run

或者使用简写r,运行结果如下图所示:

Linux下C++命令行调试实战

在第11行设置断点:

break 11

运行结果如下图所示:

Linux下C++命令行调试实战

也可以使用简写的方式,在第12行设置断点:

b 12

结果如下图所示:

Linux系统下的shell编程入门篇 中文WORD版
Linux系统下的shell编程入门篇 中文WORD版

本文档主要讲述的是Linux系统下的shell编程入门;Shell编程有很多类似C语言和其他程序语言的特征,但是又没有编程语言那样复杂。Shell程序就是放在一个文件中的一系列Linux命令和实用程序,在执行的时候,通过Linux一个接着一个地解释和执行每个命令。感兴趣的朋友可以过来看看

下载

Linux下C++命令行调试实战

使用info break指令或其简写i b查看当前设置的断点,结果如下图所示:

Linux下C++命令行调试实战

使用run指令或r指令执行程序,此时将命中第11行的断点,如下图内容所示:

Linux下C++命令行调试实战

此时可以查看变量的值,例如查看i的值,可以使用print ip i指令,如下图所示:

Linux下C++命令行调试实战

使用p N查看N的值,如下图所示:

Linux下C++命令行调试实战

此时程序执行到第11行,如果需要继续执行,输入continue指令并按回车即可,程序将执行到代码的第12行,如下图所示:

Linux下C++命令行调试实战

由于我们处于while循环体内,i的值将不断变化,如果我们需要跟踪i值的变化,需要输入display i指令,再输入continue指令让程序单步执行,如下图所示:

Linux下C++命令行调试实战

可以观察到,通过循环,又回到了第一个断点,此时i的值已经变成了2。在gdb调试中,如果我们只按回车键,gdb将执行我们最后一次输入的指令,所以我们可以一直按回车键继续让程序单步执行。

当断点执行到某个位置时,如果我们想要查看断点附近的代码,可以执行list指令进行查看,如下图所示:

Linux下C++命令行调试实战

相关专题

更多
python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

185

2023.09.27

while的用法
while的用法

while的用法是“while 条件: 代码块”,条件是一个表达式,当条件为真时,执行代码块,然后再次判断条件是否为真,如果为真则继续执行代码块,直到条件为假为止。本专题为大家提供while相关的文章、下载、课程内容,供大家免费下载体验。

90

2023.09.25

java中break的作用
java中break的作用

本专题整合了java中break的用法教程,阅读专题下面的文章了解更多详细内容。

118

2025.10.15

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

256

2025.10.24

java break和continue
java break和continue

本专题整合了java break和continue的区别相关内容,阅读专题下面的文章了解更多详细内容。

256

2025.10.24

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1349

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

704

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.7万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 7.5万人学习

NumPy 教程
NumPy 教程

共44课时 | 2.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号