clang-11添加什么编译选项支持Function Call Graph
时间: 2024-04-20 21:27:41 浏览: 17
要使用clang-11来支持Function Call Graph,你需要添加以下编译选项:
1. -emit-llvm: 将代码生成为LLVM IR格式,这是分析和优化代码所必需的。
2. -fno-inline: 禁用函数内联,这样将生成更为准确的函数调用图。
3. -fno-eliminate-unused-debug-types: 防止编译器删除无用的调试信息,这对于生成完整的函数调用图是必要的。
4. -g: 生成调试信息,这是Function Call Graph分析器所必需的。
5. -Xclang -load -Xclang /path/to/libLLVMCallGraph.so: 加载LLVMCallGraph插件,它可以生成函数调用图。
请注意,这些选项可能会对编译时间和生成的代码质量产生一定影响。
相关问题
如何使用clang-11的CallGraph功能
使用clang-11的CallGraph功能可以分为以下几个步骤:
1. 安装clang-11。可以通过以下命令安装:
```
sudo apt-get install clang-11
```
2. 编译目标代码时需要添加以下选项:
```
clang-11 -Xclang -analyze -Xclang -analyzer-output=html -Xclang -analyzer-checker=debug.ExprInspection your_source_file.c
```
其中,`-Xclang -analyze`表示使用clang的静态分析功能,`-Xclang -analyzer-output=html`表示分析结果输出为html格式,`-Xclang -analyzer-checker=debug.ExprInspection`表示使用debug.ExprInspection checker来进行分析。
3. 分析结果会输出到当前目录下的`your_source_file.c.html`文件中。打开该文件,可以看到源代码的CallGraph图,以及相关的分析结果。
注意:使用CallGraph功能需要编译时添加较多的选项,可能会导致编译时间增加。同时,分析结果可能会受到代码规模、复杂度等因素的影响,需要进行适当的调整和优化。
为什么clang-tidy 15.0.0版本用不了-v选项
从Clang-Tidy 13.0.0版本开始,`-v`选项已不再用于显示详细的命令行输出,而是用于显示版本和构建信息。因此,在Clang-Tidy 13.0.0及更高版本中运行`clang-tidy -v`将显示版本和构建信息,而不是命令行输出。
如果您想要显示详细的命令行输出,您可以使用`--debug`选项替代`-v`选项。例如,以下命令将显示详细的命令行输出和指定的配置文件:
```
clang-tidy --debug myfile.cpp -config ~/my-clang-tidy-config
```
这将输出类似以下内容的信息:
```
clang-tidy version 15.0.0
Selected configuration:
/home/user/my-clang-tidy-config
clang-tidy: /usr/bin/clang-12 (CXX=/usr/bin/clang++-12)
Args before filtering: -header-filter=.* -system-headers -- -I /usr/local/include -I /usr/include -std=c++11 myfile.cpp
Configuration:
/home/user/my-clang-tidy-config
Reading /home/user/my-clang-tidy-config
...
```
如您所见,`--debug`选项提供了更详细的输出,包括指定的配置文件和其他命令行参数。