【发布时间】:2018-07-03 06:44:34
【问题描述】:
我有一个 C 文件,我想在每个函数的开头和结尾添加一个打印,包括文件名、函数名和行号。 我正在尝试使用 python 为整个 C 文件文件夹自动执行此操作。
示例:在 math.c 文件中添加函数
int add(int a, int b){
sum = a +b;
return sum;
}
我希望结果文件看起来像这样:
int add(int a, int b){
printf("Math.c, add, 12");
sum = a +b;
return sum;
}
我正在查看此链接中建议的正则表达式Using Python Regex to Find C function in File
还有其他建议吗? Ctags 是我正在探索的另一个选项,但我更喜欢为此目的使用 python 库。
编辑:
- 在微控制器上运行代码
- 不使用 Linux
- 功能有限的调试器(只能获取 printf)
【问题讨论】:
-
使用库来构建完整的 AST 会不会太过分了? github.com/eliben/pycparser 似乎可以在纯 python 中做到这一点。
-
为什么不使用 C 编译器的选项来检测函数?
-
您似乎正在将调试信息添加到您的可执行文件中。如果是这样,您最好使用已有的工具。尝试使用
-g标志编译您的代码以包含有关 symbols and line numbers 的信息,然后在 GDB 等调试器中运行您的程序。 -
@IgnacioVazquez-Abrams 关注:gcc -finstrument-functions(因为您使用的是嵌入式,所以您可能使用的是 gcc)。 gcc.gnu.org/onlinedocs/gcc/Instrumentation-Options.html