因为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) |