使用GDB调试C程序
一直想要在C语言的程序中输出变量的类型,但是没有类似PHP中的var_dump函数,通过搜索得知可以使用gdb程序来调试C程序,gdb是Linux平台上常用的调试工具了,搭配gcc使用。
简单版
先创建一个源文件main.c
#include <stdio.h>
int main(void)
{
int a[3] = {1,2,3}
return 0;
}使用gcc编译,必须要带-g参数,否则无法使用gdb调试
gcc -g main.c -o main开始使用gdb调试
$gdb main
## 进入gdb调试环境
(gdb) break main // 在 main 函数处设置断点
Breakpoint 1 at 0x1129: file main.c, line 3.
(gdb) run // 启动程序
Starting program: ../main
Breakpoint 1, main () at main.c:3
3 int a[3] = {1,2,3};
(gdb) print a // 打印 a
$1 = {1, 2, 3}
(gdb) ptype a // 打印 a 的类型
type = int [3]
(gdb) q // 退出使用gdb打印数组array
在C语言中,由于数组名也是地址类型的,所以使用在gdb使用print只会打印出内存地址,可能无法打印出全部的数组元素,特别是二维数组或者多维数组的情况下。
通过搜索gdb print array在How to view a pointer like an array in GDB?找到了打印数组(array)的方法
p *array@len
# p 表示 print
# array 表示需要打印的数组名
# len 表示要打印的长度以上就是gdb的简单使用,更高级的使用可以阅读以下链接:
GNU Debugger Tutorial
GDB调试工具总结
用GDB调试程序
《100个gdb小技巧》
或者其他网络上关于gdb的教程
gdb print 格式化输出


例如(gdb) print /x expr
本文参考:
gdb 查看内存 及 变量类型
评论已关闭