gdb调试之快速入门

本文详细介绍了GDB调试的各个方面,包括三种调试方式、编译及运行、断点设置与管理、显示堆栈和变量、寄存器信息、单步执行、继续执行、监视点、改变变量值、生成内核转储文件以及attach到进程等核心功能,旨在帮助开发者高效地进行程序调试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、gdb调试

1、gdb调试的三种方式

  • 目标板直接使用GDB进行调试。
  • 目标板使用gdbserver,主机使用xxx-linux-gdb作为客户端。
  • 目标板使用ulimit -c unlimited,生成core文件;然后主机使用xxx-linux-gdb ./test ./core。

例子:

(1)main.cpp

#include "sum.h"

using namespace std;

int main(int argc, char *argv[])
{

        if(argc != 2){
                cout << "please start with 2 values!" << endl;
                return -1;
        }
        else{
                Sum s;
                int ret = s.add(atoi(argv[1]));
                cout << "add result = " << s.getResult() << endl;
        }

        return 0;
}

(2)sum.h

#include <iostream>
  
using namespace std;

class Sum{
        public:
                Sum(){}
                ~Sum(){}
                int add(int value);
                int getResult();

        private:
                int _result = 0;
};

(3)sum.cpp

#include "sum.h"
  
int Sum::getResult()
{
        return _result;
}


int Sum::add(int value)
{
        int result = 0;
        cout << "input value = " << value << endl;
        for(int i = 0; i < value; i++){
                result += i;
        }
        _result = result;
        return result;
}

 

2、编译及运行

编译:

g++ main.cpp sum.h sum.cpp -o add -g

运行:

(法一):gdb + 编译后的文件名,然后输入run(简写r)即可运行。

(法二):命令行中先输入gdb,按回车,再输入file + 编译后的文件.

退出:q

注:cmake项目,在CMakeLists.txt文件中添加如下语句:

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")

 

3、断点

(1)设置断点

       设

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值