Nginx是一个非常受欢迎的开源软件,代码为170,000行。如何从代码中学习和研究它,成为一个具有挑战性的问题。效果要好得多。
关于使用GCC和GDB来编译和调试NGINX代码有很多文章,但实际配置中将存在各种问题。
实际验证后,总结了验证过程,我希望它对所有人都有帮助。
让我们首先了解GCC和Clang LLVM之间的关系:
我们不建议使用GCC和GDB在MacOSX上调试NGINX,建议您使用
在MACOSX上使用GDB仍然存在以下问题:
如果要完全解决此问题,请尝试此方法。
下载nginx源代码
自己下载
安装编译环境和依赖性
clang llvm lldb:brew install-with-clang llvm
LLDB和Clang已经包含在LLVM的安装中。
本文描述的施工过程中使用的版本是:
pcre zlib openssl:啤酒安装xx
使用Brew Search查找相关的相关软件包。
使用BREW安装安装相应的依赖项。
编译的nginx流程包装:github-zongzw-nginx/vscode-nginx
在build-cc.sh中,使用拦截构建被用作编译工具,而不是使用make或bear make,因为它可以通过在OSX上的特定目录上执行文件来限制。有关详细信息,请参考:
github -rizsotto/bear:bear是一种生成用于claing工具的编译数据库的工具。
OS X 10.11(使用CSRUTIL状态检查| GREP'系统完整性保护')和Fedora,Centos,Rhel(与Seastatus | Grep'Selinux状态检查)。
因此,我们使用包装器:github-rizsotto/扫描构建:python中的扫描式重新实现
使用扫描构建的Model 1:
cxx = intercept-c ++全部
顺便说一句,您可以生成compile_commands.json
打开VSCODE,但更改为插件管理选项卡:
单击其中一个插件,单击右侧安装安装,然后单击“重新加载”以自动重新启动VSCODE以生效。
请参阅GitHub-Zongzw-nginx/vscode-nginx链接中的VSCODE目录文件
Sourcetrail是一种更令人眼花code乱的代码查看工具,可以从代码生成中生成视图,功能,文件等。
Sourcetrail取决于Compile_commands.json。特定的操作步骤是:
新项目
填写项目名称和存储路径。这里的路径不是源代码,而是Sourcetrail项目文件的文件的位置,可以是任何文件目录。
添加源组
在这里,我们选择C并使用生成的compile_commands.json配置该项目。
使用compile_commands.json的方法可以大大保存我们的配置过程,并且使用“空C源组”的配置过程很复杂,这几乎是不可能的。然后您需要 - 实施。
选择compile_commands.json文件位置
选择需要索引的文件列表
从编译数据库中选择 - >检查全部
单击下一步创建,这里的其他选项默认。
开始计算索引
单击“创建”后,来自compile_commands.json的Sourcetrail找到了144个源文件。此处的源文件的数量取决于NGINX汇编配置过程中选择的模块数:
https://www.shouxicto.com/Article/configure:with-xxxx_module
单击“启动”开始索引文件
有关更多详细信息,请参阅:GitHub-Zongzw-nginx/woboq-nginx:基于Web的代码Viewer Powerd by woboq CodeViewer。在这里,Woboq集成在Docker中。该文档在链接中更详细。
原始作者:Zong Zhaowei