Chinaunix首页 | 论坛 | 博客
  • 博客访问: 249141
  • 博文数量: 22
  • 博客积分: 1806
  • 博客等级: 上尉
  • 技术积分: 272
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-16 20:10
文章分类

全部博文(22)

文章存档

2010年(6)

2009年(16)

分类: C/C++

2009-12-18 13:04:19

因为lenky平常热衷于阅读各种优秀的开源c代码,而在阅读或调式这些代码的时候对于查看c结构体变量的值非常不方便,因此最近写了一个可以打印c结构体变量的东东来,这样就方便多了,不过现在还十分、非常、很...(囧)粗糙。当然,有这个想法前搜索了Internet,以关键字“print struct”在google上进行的搜索,呵呵,发现还是有不少人有这个需求,只是却都没有找到好的方法。

 
现在这个粗糙的家伙pstruct是这样做的:
1,pstruct分析相应c头文件(比如test.h),解析出头文件内的结构体定义(比如有结构体struct_test):
pstruct -f test.h
pstruct可以通过-f选项指定文件,也可通过-d选项指定目录并同时通过-t指定文件类型,默认为.h文件。
2,pstruct分析完后回生成相应的包含有结构体打印函数(比如print_struct_test)的print_struct.c以及头文件print_struct.h。
3,在test.c内包含print_struct.h,调用print_struct_test函数即可打印相应的struct_test结构体变量。

pstruct和gdb的p指令的效果不同,pstruct可以递归打印指针,这也是唯一的好处,比如像nginx那种指针可以达到4、5级的,还是相对比较有用,否则就直接用gdb了。
阅读(7944) | 评论(3) | 转发(0) |
0

上一篇:云桌面

下一篇:flex的-T选项

给主人留下些什么吧!~~

chinaunix网友2010-09-04 14:20:15

我怎么用pstruct没有任何输出啊

chinaunix网友2009-12-20 14:48:15

ASDF

chinaunix网友2009-12-19 12:23:11

那个很粗糙的家伙的源本体呢? LZ放一下啊。