‘壹’ 如何编译 dotnet/runtime 源代码
编译 dotnet/runtime 源代码的步骤如下:
环境准备:
安装Python 3:
解决下载问题:
生成和运行编译命令:
指定编译框架版本:
验证编译结果:
重点注意事项: 编译过程中可能会遇到由于访问国外服务器网速较慢导致的下载问题,需要耐心解决。 确保按照官方文档和实际需求正确配置编译环境。 在编译过程中遇到问题时,查阅相关文档和社区资源,寻求解决方案。
‘贰’ [Dev] Xcode的记录
构建过程可以分为预处理(preprocess) -- 编译(build) -- 汇编(assemble) -- 连接(link)这几个大的过程。
LLVM(Low Level Virtual Machine)是强大的编译器开发工具套件,其核心思想是通过生成中间代码IR,分离前后端(前端编译器,后端目标机器码)。这样做的好处是,前端新增编译器,不用再单独去适配目标机器码,只需要生成中间代码,LLVM就可以生成对应的目标机器码。下面就是LLVM的架构。
预处理:头文件引入、宏替换、注释处理、条件编译等操作;
词法分析:读入源文件字符流,组成有意义的词素(lexeme)序列,生成词法单元(token)输出;
语法分析:Token流解析成一颗抽象语法树(AST);
CodeGen:遍历语法树,生成LLVM IR代码,这是前端的输出文件;
汇编:LLVM对IR进行优化,针对不同架构生成不同目标代码,以汇编代码格式输出;
汇编器生成.o文件:将汇编代码转换为机器代码,输出目标文件(object file);
连接器:将目标文件和(.dylib、.a、.tbd、.framework)进行连接,生成可执行mach-o文件。
dwarf:debugging with attribute record formats,一种源码调试信息的记录格式,用于源码级调试;
dSym:debug Symboles,调试符号,即符号表文件。符号对应着类、函数、变量等,是内存与符号如函数名、文件名、行号等的映射,崩溃日志解析非常重要。可以用dwarfmp 命令来查看dwarf调试信息。
DW_AT_low_pc表示函数的起始地址 DW_AT_high_pc表示函数的结束地址 DW_AT_frame_base表示函数的栈帧基址 DW_AT_object_pointer表示对象指针地址 DW_AT_name表示函数的名字 DW_AT_decl_file表示函数所在的文件 DW_AT_decl_line表示函数所在的文件中的行数 DW_AT_prototyped为一个 Bool 值, 为 true 时代表这是一个子程序/函数(subroutine) DW_AT_type表示函数的返回值类型 DW_AT_artificial为一个Bool值,为true时代表这是一个由编译器生成而不是源程序显式声明
使用symbolicatecrash命令行
使用dwarfmp和atos工具
xcode-project-file-format这里对xcodeproj文件格式进行了说明。
xcodeproj文件包含以下元素
总体说明
结合上面的说明,对project.phxproj文件结构进行说明
项目中setting有2处,project和target中都有,那么他们之间的关系是怎样的?
在Xcode中添加代码块步骤
1、选择代码,右键选择 create code snippet,或者在顶部导航,选择Editor-create code snippet;
2、编辑信息和代码即可,其中completion表示输入的快捷方式;
3、需要修改的参数用形式添加 ;
4、所在目录~/Library/Developer/Xcode/UserData/CodeSnippets 。
还需要注意xcshareddata目录下
参考
Xcode build过程中都做了什么 Xcode编译疾如风-3.浅谈 dwarf 和 dSYM iOS崩溃日志解析&原理 - 掘金 LLVM编译流程 & Clang插件开发 8. Xcode 工程文件解析 - 掘金 XCode工程文件结构及Xcodeproj框架的使用( 二 ) XCode: Target Settings和Project Settings的区别 Xcode-项目重命名
‘叁’ linux下如何查询系统日志
在Linux系统中,对于通过rpm包安装的Apache服务器,其日志文件通常存储在/etc/httpd/logs目录下,具体来说,access_log记录了用户的访问情况,而error_log则记录了错误信息。
而对于从二进制源码进行编译安装的Apache服务器,日志文件通常位于安装目录下的logs文件夹内,同样地,access_logs文件记录了用户的访问行为,error_log文件则记录了系统运行时遇到的错误。假设你在编译安装Apache时,选择的安装目录为/usr/local/apache,那么日志文件就会存放在/usr/local/apache/logs目录下。
值得注意的是,不同版本或不同安装方式的Apache服务器,其日志文件的具体位置可能会有所差异。因此,在处理日志文件时,首先确认Apache服务器的具体安装路径是十分必要的。可以通过执行如下的命令来查看Apache服务器的安装位置:
rpm -qf /etc/httpd/conf/httpd.conf 或 rpm -ql httpd | grep logs
对于二进制源码编译安装的情况,可以利用如下命令定位到安装目录:
find / -name httpd.conf -type f 2>/dev/null
通过这些路径,你可以方便地访问并查看Apache服务器的日志文件,这对于排查问题或分析用户行为具有重要意义。