『壹』 如何編譯 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伺服器的日誌文件,這對於排查問題或分析用戶行為具有重要意義。