首页 > 运维 > linux运维 > 正文

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

雪夜
发布: 2025-07-15 10:28:23
原创
661人浏览过

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

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

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

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

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

#include <iostream>
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
登录后复制

结果如下图所示:

白瓜面试
白瓜面试

白瓜面试 - AI面试助手,辅助笔试面试神器

白瓜面试 40
查看详情 白瓜面试

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++命令行调试实战

以上就是Linux下C++命令行调试实战的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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