【C++】在windows下配置一个小巧实用的C/C++调试环境

news2024/11/15 13:40:00

目录

1.准备环境

2.cgdb

3. gdb-dashboard

4.常用命令

4.1 cgdb命令

4.2 gdb常用命令


虽然在大部分常用的C/C++编辑器中,调试功能已经很方便且完善,但是,如果你还需要一个小巧一点,调试信息还完善的调试环境的,可以试试在cygwin中安装cgdb+gdb-dashboard的这种配置

测试环境windows10 、cygwin

1.准备环境

        cygwin是必须要的,cygwin要安装的软件包需要python,cgdb、make、cmake、gcc、g++等gcc相关软件包

        以上都准备好以后,编写一个用于测试的c++程序,这个也不是必须的,如果你有现成的可调试项目也可以用自己的项目

        首先创建一个文件夹,命名为test,在根目录里创建一个main.cpp,内容如下

#include <iostream>
#include <ostream>
using namespace std;
void fun(int a){
   cout << a <<endl; 
}
int main(int, char**) {
   fun(1);
   return 1;
}

再创建一个cmake文件,命名为CMakeLists.txt,内容如下

cmake_minimum_required(VERSION 3.0.0)
project(app VERSION 0.1.0)
SET(CMAKE_BUILD_TYPE "Debug")
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
AUX_SOURCE_DIRECTORY(. DIR_SOURCE)
add_executable(app ${DIR_SOURCE})

 然后在test根目录下在创建一个build文件夹,用于存放make和最终生成的应用程序

 以上工作都准备好以后,打开cygwin,在命令行中,进入test文件夹

cd /cygdrive/XXXXX/test/build

然后依次执行如下代码

cmake ..
make

看一下build文件夹中生成app.exe 没有,如果生成了,准备工作就完成了

2.cgdb

        CGDB可以看做是gdb的一个前端,它使得调试更加方便和直观。用户可以通过键盘进行调试操作。它还具有语法高亮、代码缩进的功能。还可以断点设置、单步执行、变量查看等。它还提供了堆栈追踪和程序状态查看的功能,除了基本的调试功能,还可以反汇编、内存查看等。他可以在Linux上安装,同样也可以安装在cygwin中。

       在上一步中已经安装过了,本节就讲讲如何使用和配置cgdb

       现在cygwin中已经安装了cgdb,也有了用于测试的程序,就可以用cgdb打开调试了,在cygwin中进入build文件夹,然后输入如下命令

cgdb ./app

       然后敲个回车,会看到如下界面,这个就是cgdb的调试界面

然后在(gdb)命令行中输入b 5 卡一个断点,回车,再继续输入 r 然后回车,上面源代码界面会看到断点指针指向了行号是5的地方

这个就是cgdb的基本使用,但是上下分栏看的不太舒服,左右分栏就会看的好一下,这就还需要设置一下,打开你的cygwin 目录 找到\home\(用户名)\.cgdb\cgdbrc  文件,打开他,如果没有,就创建一个,输入以下内容

:set winsplitorientation='vertical'

然后重新打开cgdb,看源码和操作区,默认就已经变成左右分栏了

如果对分栏宽度不满意,可以用alt+(加号键)或者alt+(减号键),控制源代码和操作区的宽度

3. gdb-dashboard

      虽然按照以上配置,已经可以有个比较好的调试体验了,但是,如果还想要得到更好的调试体验,就还需要给gdb加点其他配置,让他输出的信息更多一点,让我们少输入一点命令。

     这个就要说一下gdb-dashboard了,

     gdb-dashboard是一款为gdb提供一个更加友好和可定制的前端界面的工具。它可以为开发者提供一个图形化界面来查看和调试程序的状态,并提供一些快捷键和命令来快速访问gdb的功能.他并不是一个程序,它只是一个用python写的配置文件,从下面地址,把.gdbinit文件下载下来,放到你的cygwin,\home\(用户名)下就行了,

https://github.com/cyrus-and/gdb-dashboard

放好以后,再重新启动cgdb,会出现如下界面,这个就是用了gdb-dashboard后的效果

这次看的就帅多了,右侧操作区多了汇编、堆栈、源码、局部变量等

但是,有些功能可能是不常用的,没关系,他能配置,用不到的可以给他关闭了,具体操作,在cygwin目录下\home\(用户名)\.gdbinit.d 文件下,找到init文件,如果没有这个文件的话的话,自己创建一个也行。在里面输入

dashboard -layout variables stack assembly

然后重新打开cgdb,在右侧功能区,就只能看到变量、栈、汇编信息了

它还有其他的一些配置方式,具体有什么配置,可以如下操作

在cgdb或者gdb环境内,输入

 help  dashboard

会输出帮助信息,可以按照帮助信息进行配置

4.常用命令

        以上就是一个调试环境的建立,这个环境,不光在cygwin下,在linux下也是可以用,但是操作方式都是通过键盘和命令键入的方式,所以,还需要介绍一下常用的操作命令和按键

4.1 cgdb命令

命令说明
ctrl+w切换分栏方式
page up上翻页
page down下翻页
esc推出命令模式
i进入命令模式
ctrl+l清除操作区记录
o打开这个程序,使用的所有代码文件列表
F5启动程序
F6运行程序知道下一个断点停止
F7执行完当前代码
F8执行下一步
F10进入一个函数
空格下断点

4.2 gdb常用命令

命令

缩写

说明

list

l

显示源代码

break

b

设置断点

info

i

描述程序的状态

run

r

运行程序

display

disp

跟踪某个变量,

step

s

执行下一条语句,进入调用函数内

next

n

执行下一条语句,

print

p

打印内部变量值

continue

c

运行程序直到下一个断点

start

st

在main函数的第一句停住

kill

k

终止程序

backtrace

bt

产看函数调用堆栈

frame

f

查看栈帧

quit

q

退出调试环境

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2240865.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dolby TrueHD和Dolby Digital Plus (E-AC-3)编码介绍

文章目录 1. Dolby TrueHD特点总结 2. Dolby Digital Plus (E-AC-3)特点总结 Dolby TrueHD 与 Dolby Digital Plus (E-AC-3) 的对比 Dolby TrueHD和Dolby Digital Plus (E-AC-3) 是两种高级的杜比音频编码格式&#xff0c;常用于蓝光影碟、流媒体、影院等高品质音频传输场景。它…

k8s上部署redis高可用集群

介绍&#xff1a; Redis Cluster通过分片&#xff08;sharding&#xff09;来实现数据的分布式存储&#xff0c;每个master节点都负责一部分数据槽&#xff08;slot&#xff09;。 当一个master节点出现故障时&#xff0c;Redis Cluster能够自动将故障节点的数据槽转移到其他健…

计算机网络——路由选择算法

路由算法 路由的计算都是以子网为单位计算的——找到从原子网到目标子网的路径 链路状态算法

4.3 Java JNI 机制

1 绪论 JNI 是一个原生编程接口。它允许在 Java 虚拟机&#xff08;JVM&#xff09;内运行的 Java 代码与用其它编程语言&#xff08;如 C、C 和汇编&#xff09;编写的应用程序和库进行互操作。 JNI 最重要的好处是它对底层 JVM 的实现没有限制。因此&#xff0c;JVM 供应商可…

influxDB 时序数据库安装 flux语法 restful接口 nodjsAPI

安装 Install InfluxDB | InfluxDB OSS v2 Documentation Debian和Ubuntu用户可以用apt-get包管理来安装最新版本的InfluxDB。 对于Ubuntu用户&#xff0c;可以用下面的命令添加InfluxDB的仓库&#xff0c;添加之后即可apt-get 安装influxdb2 wget -q https://repos.influx…

7z 解压器手机版与解压专家:安卓解压工具对决

7z 解压器手机版和解压专家都是在安卓设备上广受欢迎的解压软件。7z 解压器手机版由深圳乡里云网络科技有限公司开发&#xff0c;大小为 32.8M&#xff0c;支持多种常见的压缩文件格式&#xff0c;如.zip、.rar、.7z 等。 它对安卓操作系统的特性和用户习惯进行了优化&#xf…

亮数据——助力全球数据抓取的高效代理平台

目录 实际案例&#xff1a;利用代理服务抓取企业信息完整代码运行结果 亮数据的技术优势与应用场景产品更新&#xff1a;简化注册流程与智能助手升级立即注册&#xff0c;开启您的数据抓取之旅&#xff01; 在如今的大数据时代&#xff0c;企业决策越来越依赖于数据分析&#x…

设计模式之责任链模式(Chain Of Responsibility)

一、责任链模式介绍 1、责任链模式介绍 职责链模式(chain of responsibility pattern) 定义: 避免将一个请求的发送者与接收者耦合在 一起&#xff0c;让多个对象都有机会处理请求。将接收请求的对象连接成一条链&#xff0c;并且沿着这条链 传递请求&#xff0c;直到有一个对…

【月之暗面kimi-注册/登录安全分析报告】

前言 由于网站注册入口容易被机器执行自动化程序攻击&#xff0c;存在如下风险&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露&#xff0c;不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 &#xff0c;造成用户无法登陆、注册&#xff0c;大量收到垃圾短信的…

低代码牵手 AI 接口:开启智能化开发新征程

一、低代码与 AI 接口的结合趋势 低代码开发平台近年来在软件开发领域迅速崛起。随着企业数字化转型的需求不断增长&#xff0c;低代码开发平台以其快速构建应用程序的优势&#xff0c;满足了企业对高效开发的需求。例如&#xff0c;启效云低代码平台通过范式化和高颗粒度的可配…

安培环路定理

回忆 静电场中的回路定理&#xff1a;→静电场是保守场 安培环路定理 1、圆形回路包围无限长载流直导线 &#xff08;1&#xff09;回路逆时针 &#xff08;2&#xff09;回路顺时针 规定&#xff1a; 回路正向由右手螺旋定则判断&#xff08;根据回路绕行方向&#xff0c;…

IDEA 2024.3正式版发布,速览新功能!

0 前言 IntelliJ IDEA 2024.3 引入了一系列可以提升您的开发体验的强大新功能。 IDE 现在提供代码逻辑结构的表示&#xff0c;简化了 Kubernetes 应用程序的调试体验&#xff0c;引入了集群范围的 Kubernetes 日志访问。 1 关键亮点 1.1 Structure工具窗口中的 Logical代码结…

LabVIEW 实现 find_nearest_neighbors 功能(二维平面上的最近邻查找)

1. 背景介绍 在数据分析和图像处理领域&#xff0c;经常需要查找给定点的最近邻居点。在LabVIEW中&#xff0c;计算二维平面上多个点之间的欧氏距离&#xff0c;并返回距离最近的几个点是一种常见操作。find_nearest_neighbors 函数用于实现这个功能。 2. 欧氏距离计算 在二维…

LeetCode 单调栈 下一个更大元素 I

下一个更大元素 I nums1 中数字 x 的 下一个更大元素 是指 x 在 nums2 中对应位置 右侧 的 第一个 比 x 大的元素。 给你两个 没有重复元素 的数组 nums1 和 nums2 &#xff0c;下标从 0 开始计数&#xff0c;其中nums1 是 nums2 的子集。 对于每个 0 < i < nums1.length…

vue的组件使用

1.安装element plus组件库 npm install element-plus --save

2024-11-14 算法学习及论文辅导(每日更新,随时联系)

看看学习小群的学习氛围&#x1f447;&#x1f3fb; 很多同学自己学习遇到问题没人解决&#xff0c;最终消耗了时间&#xff0c;精力同时大大消耗了自己对学习的信心&#x1f627; &#x1f973;来看看跟班学习&#xff0c;大家遇到问题的时候是怎么解决的&#xff1a; 首先…

开源三代示波器的高速波形刷新方案开源,支持VNC远程桌面,手机,Pad,电脑均可访问(2024-11-11)

说明&#xff1a; 1、本来这段时间是一年一度Hackaday硬件设计开源盛宴&#xff0c;但hackaday电子大赛在去年终结了。所以我开源个我的吧。 2、三代示波器的高速波形刷新方案&#xff0c;前两年就做好了&#xff0c;这两年忙H7-TOOL的更新比较多&#xff0c;三代示波器的更新…

B-树特点以及插入、删除数据过程

B树&#xff08;B-Tree&#xff09;是一种自平衡的多路查找树&#xff0c;它广泛应用于数据库索引和文件系统中&#xff0c;尤其适用于外部存储设备&#xff08;如磁盘&#xff09;。B树的设计使得它能够高效地存储大量数据并支持高效的插入、删除和查询操作。以下是B树的主要特…

微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式

微信小程序自定义tabbar&#xff1b;禁用某个tab&#xff1b;修改某个tab的样式 原本使用本身的tabBar就已经很舒服了&#xff0c;很合适了的&#xff0c;但是总有一些脑洞大开的产品和客户&#xff0c;给你搞点多样式&#xff0c;没办法牛马就得去做咯&#xff0c;现在就给大…

操作系统——内存段式和段页式管理

目录 一、为什么要有段式管理&#xff1f; 二、段式管理的实现原理 1、段式虚拟空间 2、段式管理的内存分配与释放 3、段式管理的地址变换 &#xff08;1&#xff09;段表 &#xff08;2&#xff09;动态地址变换 4、段的共享与保护 &#xff08;1&#xff09;共享 &a…