Linux下gdb调试用法命令

本文详细介绍了如何在Fedora系统中使用gdb调试OpenCV程序,从gdb的安装、gcc/g++的编译选项,到gdb的基本命令如list、run、break、print、watch等,以及逐步调试、设置断点、查看变量和退出函数的方法,帮助开发者掌握C/C++程序的调试技巧。
摘要由CSDN通过智能技术生成

一直在Fedora平台下写opencv的程序,需要对程序进行调试,主要用的调试工具是gdb. gdb提供了如下功能:

  • 1.在程序中设置断点,Debug时遇到断点处暂停
  • 2.可以监视某个变量,并利用print函数将该变量的值打印出来
  • 3.程序可step-by-step执行
  • 4.运行时修改变量的值
  • 5.跟踪路径
  • 6.线程切换等
    下面结合OpenCV针对C\C++程序使用gdb调试进行介绍。

1.gdb安装

首先检查一下电脑中是否已经安装gdb

gdb --version

如果已经存在gdb,则会得到如下结果:
这里写图片描述
如果没有给出gdb的版本号则需要手动下载

sudo apt-get install gdb #针对Ubuntu系统
sudo dnf install gdb #针对Fedora系统

2.gcc\g++编译基础

在前面我们文章《opencv之在Linux下编译opencv程序的两种方式g++、cmake》介绍过gcc\g++编译的基础内容,当需要使用gdb调试代码时,需要在gcc\g++编译选项中添加-g选项,如下所示:

g++ -g `pkg-config opencv --cflags` opencv.cpp  -o opencv `pkg-config opencv --libs`  

这样生成的opencv可执行文件可以直接使用gdb进行调试
可以直接在命令行输入gdb+程序名进入调试,在这里使用《opencv学习(三十一)之图像边缘像素填充估计copyMakeBorder()》中的程序进行演示,其代码如下所示:

/*程序说明
 *当按下按键‘c’代表使用BORDER_CONSTANT
 *RNG生成的随机数作为像素值进行填充
 *当按下按键‘r’代表使用BORDER_REPLICATE
 *图像扩充的边框由原图像边缘像素的值进行填充
 */

#include <opencv2/imgproc.hpp>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
#include <stdlib.h>
#include <stdio.h>

using namespace std;
using namespace cv;

//声明全局变量
Mat srcImage, dstImage;
int g_top, g_bottom, g_left, g_right;
int borderType;
Scalar value;
String windowName = "copyMakeBorder Demo";
RNG rng(12345);

int main()
{
    int c;

    srcImage = imread("dog.jpg");

    //判断图像是否加载成功
    if(srcImage.empty())
    {
        cout << "图像加载失败!" << endl;
        return -1;
    }
    else
        cout << "图像记载成功" << endl << endl;
    imshow("原图像", srcImage);

    //程序使用说明
    printf("\n \t copyMakeBorder Demo: \n");
    printf("\t --------------------\n");
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值