# JIP-1: Debug message host call [HackMD 原文連結](https://hackmd.io/@polkadot/jip1) --- ## 📌 簡介 JIP-1 提出一個新的 host-call 指令 `log`(Index: `100`), 讓 service 在執行時從內部輸出訊息到 node,方便除錯與觀察。 PVM 裡的 servicel host call 是「單向的 debugging 訊息通告」,service -> node --- ## 🔧 Host-call 指令格式說明(依據 JIP-1 與灰皮書格式) --- ### 📦 基本結構 | 項目 | 說明 | |-------------------|--------------------------------------------| | Host-call index | `100` | | Name | `log` | | Gas | `0` | | Input registers | `ω₇ ~ ω₁₁` | | Output registers | 無 | | Side-effects | 記憶體錯誤不會中斷執行,否則會顯示 log 訊息 | --- ### 🧠 Input register 對應 | Register | 含義 | 說明 | |----------|----------|------| | `ω₇` | `level` | 顯示訊息的 level(0~4) | | `ω₈` `ω₉` | `target` | 若 `ω₈=0 ∧ ω₉=0`,表示不指定 target | | `ω₁₀` `ω₁₁` | `message` | message | --- ## 🔢 等級定義(`level`) | Level | Icon | 說明 | |-------|------|-------------------------| | 0 | ⛔ | Fatal error | | 1 | ⚠ | Warning | | 2 | ℹ | Important info | | 3 | 💁 | Helpful info | | 4 | 🪡 | Pedantic info | --- ## 🖥 Console 顯示格式 ``` <YYYY-MM-DD hh:mm:ss> <LEVEL>[@<CORE>]?[#<SERVICE_ID>]? [<TARGET>]? <MESSAGE> ``` **範例:** ``` 2025/01/01 12:10:42 DEBUG@1#42 bootstrap-refine Hello world! ``` --- ### 🧠 對應欄位拆解: | 欄位 | 對應值 | 說明 | |------------------------------|----------------------|------| | `YYYY-MM-DD hh:mm:ss` | `2025/01/01 12:10:42` | 訊息產生的時間戳記 | | `<LEVEL>` | `DEBUG` | | | `@<CORE>`(Optional) | `@1` | PVM 正在執行的 core 編號 | | `#<SERVICE_ID>`(Optional) | `#42` | 執行此訊息的 service ID | | `<TARGET>`(Optional) | `bootstrap-refine` | 開發者指定的目標分類,用來表示訊息來源模組 | | `<MESSAGE>` | `Hello world!` | 真正要顯示的內容訊息 | --- --- ### ✅ 結論說明: 此格式讓 JAM 上的 service 可以清楚將訊息傳遞給節點操作者與開發者, 並且透過 core/service ID/tag 分類訊息,方便在開發與測試階段進行觀察與追蹤。 --- ## 🧾 JSON 格式(機器解析) ```json { "time": "<YYYY-MM-DD hh-mm-ss>", "level": "<LEVEL>", "message": "<MESSAGE>", "target": "<TARGET>" | null "service": "<SERVICE_ID>" | null "core": "<CORE>" | null }
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up