Chinaunix
标题:
用shell取得函数中定义的变量
[打印本页]
作者:
jwz0620
时间:
2012-10-13 00:03
标题:
用shell取得函数中定义的变量
本帖最后由 jwz0620 于 2012-10-19 23:55 编辑
假设一个 .c 程序, 里面有函数定义若干, 函数中定义若干变量, 有什么办法可以把函数定义的所有变量按函数找出来?
如:
funtion_a(){
int a, b;
char bb[10];
........
........
}
funtion_b(){
int a, b;
........
........
}
输出结果为:
函数名 变量名
funtion_a a
funtion_a b
funtion_a bb
funtion_b a
funtion_b b
作者:
ziyunfei
时间:
2012-10-13 11:24
用shell写个C parser吗?牛
作者:
winway1988
时间:
2012-10-13 14:35
本帖最后由 winway1988 于 2012-10-13 14:35 编辑
$ cat test.c
int
f1(void)
{
int a1, a2;
int b1;
printf("b1 = %d\n", b1);
return a1 + a2;
}
int
f2(int a, int b)
{
int a3 = a;
int b2 = b;
return a3 + b2;
}
int
main()
{
int a, b;
f1();
f2(a, b);
return 0;
}
$ cat awkscr
/\(DW_TAG_subprogram\)/ {
flag = 1;
next;
}
flag == 1 && /DW_AT_name/ {
func_name = $NF;
flag = 2;
next;
}
flag == 2 && /\(DW_TAG_variable\)/ {
flag = 3;
next;
}
flag == 3 && /DW_AT_name/ {
print func_name, $NF;
flag = 2;
}
$ gcc -g -c test.c
test.c: In function ‘f1’:
test.c:7: warning: incompatible implicit declaration of built-in function ‘printf’
$ readelf --debug-dump test.o | awk -f awkscr
f1 a1
f1 a2
f1 b1
f2 a3
f2 b2
main a
main b
复制代码
作者:
L_kernel
时间:
2012-10-13 21:39
楼上的方法不错,转换一下~~
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2