利用gcc预处理文件和doxygen分析宏定义多的复杂c工程

某个c语言工程,无法直接gdb调试,代码中宏定义、宏函数满天飞、临时生成config.h、头文件在其他工程中。

阅读难度很大,doxygen分析也很困难。我发明了一个新方法:

1. gcc编译时,-save-temps,生成 .i 预处理文件。

2. clang-format、sed等工具处理下.i文件,调整格式方便doxygen分析。doxygen不如编译器智能,直接处理.i文件出错多。

 

1. make时在CFLAG之类的变量里 += -save-temps,类似gcc -E 的效果。展开头文件和宏

2. 处理文件

改后缀

for file in *.i; do mv "$file" "${file%.i}.c"; done

替换#

find . -type f -name "*.c" -exec sed -i 's/#\ /\/\//g' {} +

去掉__attribute__

find . -type f -name "*.c" -exec sed -i 's/__attribute__\ (([^)]\+)))/ /g' {} +
find . -type f -name "*.c" -exec sed -i 's/__attribute__\ (([^)]\+))/ /g' {} +

此时可以clang-format 一下,配置是GNU。不做可能也行

 

3. doxgen -g

     设置 Doxyfile

EXTRAC_ALL=YES

EXTRAC_STATIC=YES

CALL_GRAPH=YES

CALLER_GRAPH=YES

posted @ 2024-02-21 17:31  园友1683564  阅读(36)  评论(0编辑  收藏  举报