不会gdb的你如何装大佬

 我们现在的编译工具越来越高大上,所以会gdb的人越来越少,每每看到被人使用GDB调试代码心里面默默的竖起大拇指,不过话说回来会gdb调试的人估计是风毛菱角,不过在真实的开发环境中我们还是会用到的。尤其是现在转到linux平台开发碰到多进程的开发没办法还是需要学习学习。发现其实也没有想象中的难。

看了以下文章你也能装大佬。

首先我们看看GDB的一些指令,如下表:

使用GDB前需要安装gdb工具

yum install gcc-c++  #centos 安装c++编译器
sudo  apt install g++ #ubunto 安装c++编译器

sudo apt install gdb #安装gdb调试器

GDB指令表

命令

命令缩写

命令说明

list

l

显示多行源代码

break

b

设置断点,程序运行到断点的位置会停下来

info

i

描述程序的状态

run

r

F5 开始运行程序

display

disp

跟踪查看某个变量,每次停下来都显示它的值

step

s

F11 执行下一条语句,如果该语句为函数调用,则进入函数执行其中的第一条语句

next

n

F10 执行下一条语句,如果该语句为函数调用,不会进入函数内部执行(即不会一步步地调试函数内部语句)

print

p

打印内部变量值

continue

c

F5 继续程序的运行,直到遇到下一个断点,相当于

set var name=v

设置变量的值,可以在程序运行过程中修改值,感觉这个很bug

start

st

开始执行程序,在main函数的第一条语句前面停下来

file

装入需要调试的程序,默认是已经装载好了。

kill

k

终止正在调试的程序

watch

监视变量值的变化

backtrace

bt

产看函数调用信息(堆栈)

frame

f

查看栈帧

quit

q

退出GDB环境

x x 查看内存地址中的值

我们来看看如何使用上面指令吧!

首先需要一个小程序

#include <iostream>
#include <string>
using namespace std;
int main() {
	string str1 = "hello world!";
	string str2 = "I love you";
	cout << str1 << endl;
	cout << str2 << endl;
	return 0;
}

我们来编译他

#-g 表示编程成Debug模式, -o 表示编程输出成main可执行文件。
g++ -g main.cpp -o main
#./main  

运行结果: 

gdb调试

gdb main

输入命令:r 或者 run

看到一下信息

starting program: 表示运行程序的路径

process : 表示运行程序的进程号。

如何给gdb打断点呢 ?

可以看看这个文章:https://blog.csdn.net/arv002/article/details/110133971

猜你喜欢

转载自blog.csdn.net/arv002/article/details/110101413