- 论坛徽章:
- 1
|
本帖最后由 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
复制代码 |
|