目录
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 | 执行下一条语句, |
| p | 打印内部变量值 |
continue | c | 运行程序直到下一个断点 |
start | st | 在main函数的第一句停住 |
kill | k | 终止程序 |
backtrace | bt | 产看函数调用堆栈 |
frame | f | 查看栈帧 |
quit | q | 退出调试环境 |