GDB调试c/c++程序(本人用于debugOpenFoam里面的C++源文件)

个人理解:

1.不用下载额外的软件

2.gdb hello命令后面跟的是一个g++编译后的可执行文件。

使用GDB

一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点。如:

> g++ -g hello.cpp -o hello

> gcc -g hello.c -o hello

tips:上面的是编译C++程序,下面编译的是C。

如果没有-g,你将看不见程序的函数名、变量名,所代替的全是运行时的内存地址。当你用-g把调试信息加入之后,并成功编译目标代码以后,让我们来看看如何用gdb来调试他。

启动GDB的方法:

gdb program

program 也就是你的执行文件,一般在当前目录下。

实际详细操作步骤

C++源程序:hello.cpp

cpp 复制代码
#include <iostream>
using namespace std;
 
// main() 是程序开始执行的地方
 
int main()
{
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

编译生成执行文件:(Linux下)
jie@dell:~/myapp/mydebug/test_c++$ gcc -g hello.cpp -o hello

编译后会得到一个可执行文件hello

下面使用GDB调试,代码:

jie@dell:~/myapp/mydebug/test_c++$ gdb hello

(上面代码用来启动GDB)

(gdb) l

(输入l命令相当于list,从第一行开始列出源码)

下面这个网址告诉了gdb其他详细命令的使用方法,亲测有效:

https://www.cnblogs.com/lvdongjie/p/8994092.html

相关推荐
arvin_xiaoting18 小时前
#zsh# #Ubuntu# 一键安装zsh、oh-my-zsh、常用插件
linux·ubuntu·elasticsearch
脏脏a18 小时前
【Linux】Linux工具漫谈:yum 与 vim,高效操作的 “左膀右臂”
linux·运维·服务器
APItesterCris19 小时前
构建弹性数据管道:利用淘宝商品 API 进行流式数据采集与处理
linux·数据库·windows
艾莉丝努力练剑19 小时前
【C++STL :stack && queue (一) 】STL:stack与queue全解析|深入使用(附高频算法题详解)
linux·开发语言·数据结构·c++·算法
胡萝卜3.019 小时前
深入理解string底层:手写高效字符串类
开发语言·c++·学习·学习笔记·string类·string模拟实现
kyle~19 小时前
计算机系统---CPU的进程与线程处理
linux·服务器·c语言·c++·操作系统·计算机系统
NiKo_W19 小时前
Linux 进程通信——基于责任链模式的消息队列
linux·服务器·消息队列·责任链模式·进程通信
云飞云共享云桌面19 小时前
广东某模具制造工厂用一台云服务器供8个研发设计同时用
linux·运维·服务器·网络·自动化·制造
只是懒得想了20 小时前
用C++实现一个高效可扩展的行为树(Behavior Tree)框架
java·开发语言·c++·design-patterns
bkspiderx20 小时前
C++设计模式之行为型模式:模板方法模式(Template Method)
c++·设计模式·模板方法模式