robots: noindex
ffx debug symbolize
指令會將記錄處理成符號化格式 (即人類可讀的堆疊追蹤)。
概念
以下範例顯示 Fuchsia 裝置的符號化記錄:
$ ffx log --kernel
...
[326.124][klog][klog][I] #0 0x0000428d2319f74b in abort() ../../zircon/third_party/ulib/musl/src/exit/abort.c:7 <libc.so>+0x6474b sp 0x27c83188f70
[326.124][klog][klog][I] #1 0x000001cb1faef047 in main() src/hello_world/hello_world.cc:9 <<VMO#113249=blob-30a652b1>>+0x2047 sp 0x27c83188f80
[326.124][klog][klog][I] #2 0x0000428d2319eef2 in start_main(const start_params*) ../../zircon/third_party/ulib/musl/src/env/__libc_start_main.c:140 <libc.so>+0x63ef2 sp 0x27c83188fa0
[326.124][klog][klog][I] #3 0x0000428d2319f145 in __libc_start_main(zx_handle_t, int (*)(int, char**, char**)) ../../zircon/third_party/ulib/musl/src/env/__libc_start_main.c:215 <libc.so>+0x64145 sp 0x27c83188ff0
[326.124][klog][klog][I] #4 0x000001cb1faef011 in _start(zx_handle_t) ../../zircon/system/ulib/c/Scrt1.cc:7 <<VMO#113249=blob-30a652b1>>+0x2011 sp 0x4046d0234fe0
[326.124][klog][klog][I] #5 0x0000000000000000 is not covered by any module sp 0x4046d0234ff0
透過符號化記錄,您可以讀取發生錯誤的來源碼檔案名稱和行號 (例如 in main() src/hello_world/hello_world.cc:9
)。
根據預設,當偵錯符號在環境中註冊時,ffx log
指令會自動顯示符號化的記錄。(如要關閉這項功能,請執行 ffx log -–no-symbols
)。ffx debug symbolize
指令 (ffx log
會在背景使用) 會將含有符號化標記的記錄做為輸入內容,並產生符號化記錄做為輸出內容。只要環境中註冊了對應於這些標記的偵錯符號,這項程序就會運作 (請參閱「註冊偵錯符號」)。
將來自外部來源的記錄符號化
在開發期間,ffx log
會自動處理已註冊的偵錯符號,並列印符號化記錄,因此您可能不需要手動將記錄轉換為環境中的符號化格式。但在某些情況下,您可以從外部來源 (例如 Fuchsia 建構工具的輸出內容) 取得原始記錄副本。如果您想將這類記錄轉換為符號化格式,可以將記錄做為輸入內容傳遞至 ffx debug symbolize
指令。
如要手動將記錄轉換為符號化格式,請執行下列步驟:
啟動符號化工具:
ffx debug symbolize
終端機會等待輸入內容。
複製含有符號化標記的原始記錄。
貼到
ffx debug symbolize
終端機中。這項工具會以符號化格式輸出記錄。