版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/82085895
使用gdb调试
在Linux使用gdb命令进行单步调试
在compile这一步添加-g
如:
g++ -g main.cpp -o hellowrld
在Makefile里面
%.o: %.cpp
g++ -c -g -MMD $< -0 $@
进入gdb界面后,使用命令来操作调试过程
gdb ./helloworld
b(break):添加断点;
r(run):重头开始运行程序;
n(next):下一步;
c(continue):程序继续运行,直到下一处断点,或者程序运行结束;
q(quit):退出程序界面;
p(print):显示某个的值;
disp(display):监视变量,相当于VC下的watch;
x显示内存的值:x/16xb buf【x:以16进制显示,b单位是1字节】
注意:可以输入全称break,也可以只输入b
main.cpp源码如下:
#include <stdio.h>
int main(){
int a=100;
int b=200;
int result=a*b;
printf("The result is %d\n",result);
char buf[64]="Hello World!\n";
int data[4]={5,6,7,8};
return 0;
}
下面来看下运行截图:
编译程序以及进入gdb界面:
添加断点:
b main (加上函数名)
b main.cpp(文件名+行号)
b 12(当前文件的行号)
b Object::Create(类名+成员函数)
显示断点info break
删除断点:del break 2(这个2为编号)
打印变量:
监视变量,以及打印内存:
x 显示内存的值
x/16xb buf 其中,
16: 显示16个单位
x: 以十六进制显示 (x d u f s ...)
b: 单位是1字节 (可选 b h w g )
byte, half‐word, word, giant