gdb调试之快速入门

一、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)设置断点

       设置断点可以通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要对SLAM程序进行GDB调试,首先需要进入GDB调试环境。可以使用命令"gdb [程序名]"来进入GDB调试。例如,在ORB_SLAM3的ROS示例中,可以使用命令"gdb Stereo"进入GDB调试环境。 进入GDB调试后,可以使用一些常用的GDB命令进行调试。例如,可以使用"run"命令来运行程序,使用"break"命令设置断点,使用"step"命令逐行执行程序,使用"print"命令打印变量的值等等。这些命令可以帮助我们分析程序的执行过程和调试问题。 请注意,GDB是一个命令行模式的调试工具,因此需要熟悉一些基本的GDB命令才能进行有效的调试。在GDB调试过程中,可以通过加上"-q"参数来禁止输出一些不必要的信息,以便更清晰地查看调试信息。 总结一下,要对SLAM程序进行GDB调试,可以使用"gdb [程序名]"命令进入GDB调试环境,并使用一些常用的GDB命令进行调试,例如"run"、"break"、"step"、"print"等命令[2]。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [SLAM工具|GDB调试入门到精通](https://blog.csdn.net/Yong_Qi2015/article/details/122463019)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [GDB调试 ORBSLAM3](https://blog.csdn.net/qq_41861406/article/details/125034738)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值