PROTOCOLS
ComponentDataRegister
定義於 fuchsia.feedback/data_register.fidl
註冊要在意見回饋報告中附加的實用資料 (當機、使用者意見回饋或錯誤報告)。
元件可運用這項資訊擴增所有意見回饋報告所附加的資料。預設 「意見回饋」服務會附加向平台公開的資料。這種通訊協定對資料 某些產品中的某些元件加以識別,但不會向平台公開。
epitaph ZX_ERR_INVALID_ARGS 表示用戶端正在傳送無效要求。詳情請見 指出這些請求可能無效的原因。
epitaph ZX_ERR_NO_RESOURCES 表示伺服器已無法再儲存額外的資源 元件資料,而且不會配置新的連線。
Upsert
更新或插入等要加入意見回饋報告的額外元件資料。
命名空間和每個註解鍵都可用來決定是否要更新或插入 註解。如果相同命名空間中的特定鍵已有註解, 更新值,否則請在該命名空間中,插入使用該索引鍵的註解。
例如,假設這些是伺服器已保存的資料 (來自之前的呼叫) 套用至 Upsert()):
{
"bar": { # namespace
"channel": "stable",
},
"foo": { # namespace
"version": "0.2",
}
}
接著:
Upsert({
"namespace": "bar",
"annotations": [
"version": "1.2.3.45",
"channel": "beta",
]
})
會造成伺服器現在保留:
{
"bar": { # namespace
"channel": "beta", # updated
"version": "1.2.3.45" # inserted
},
"foo": { # namespace
"version": "0.2", # untouched
}
}
請注意,伺服器最多只能保留 MAX_NUM_ANNOTATIONS_PER_NAMESPACE 個不同項目 每個命名空間的註解鍵,來擷取最新的值。
要求
名稱 | 類型 |
---|---|
data |
ComponentData
|
回應
<空白>
CrashReporter
在 fuchsia.feedback/crash_reporter.fidl 中定義
提供當機報告。
FileReport
回報 report
當機,並提供作業的最終結果。
這表示如果在本機當機報告中產生當機報告, 或將當機報告上傳到遠端當機伺服器 取決於 FIDL 伺服器的設定
警告:這可能需要幾分鐘的時間。撥號中 我們不建議以同步方式使用這個函式。
要求
名稱 | 類型 |
---|---|
report |
CrashReport
|
回應
名稱 | 類型 |
---|---|
payload |
CrashReporter_FileReport_Result
|
CrashReportingProductRegister
定義於 fuchsia.feedback/crash_register.fidl
允許元件選擇其他當機回報產品,以回報該產品的當機問題 元件
根據預設,平台偵測到的所有當機事件都會歸在單一產品中 伺服器這個 API 可讓元件選擇自己的產品,同時享有 處理及當機回報
Upsert
更新或插入,例如特定元件網址的當機回報產品。
對相同元件網址的後續呼叫 Upsert() 會覆寫
CrashReportingProduct
。
如果元件也會自行回報當機報告,則使用 UpsertWithAck(),以避免競爭 條件和歸因錯誤
要求
名稱 | 類型 |
---|---|
component_url |
string[2083]
|
product |
CrashReportingProduct
|
UpsertWithAck
新增/插入 (見上方說明) 並在作業完成時通知用戶端。
這可讓用戶端防止在提交當機報告和呼叫 Upsert 之間競爭。 否則,如果是在更新/插入作業完成前提交當機報告,則當機報告將 歸因於錯誤的產品,則可能產生不正確的當機資料。
要求
名稱 | 類型 |
---|---|
component_url |
string[2083]
|
product |
CrashReportingProduct
|
回應
<空白>
DataProvider
定義於 fuchsia.feedback/data_provider.fidl
在意見回饋報告中加入實用的資料,例如系統提交的當機報告, 使用者提交的使用者意見回饋報告或開發人員提交的錯誤報告。
GetAnnotations
傳回一組關於裝置狀態的註解。
如果收集圖像時發生問題,「annotations
」可能就不會顯示任何內容。
這些註解與透過 GetSnapshot() 提供的註解相同,但有些客戶只需要 有些則需要註解和快照 相較於收集註解,快照可能需要更多的時間,例如記錄檔 只是快照的一部分,並非註解的一部分,因此可能需要一些時間。
要求
名稱 | 類型 |
---|---|
params |
GetAnnotationsParameters
|
回應
名稱 | 類型 |
---|---|
annotations |
Annotations
|
GetScreenshot
傳回以所提供 encoding
編碼的目前檢視畫面的圖片。
如果不支援編碼,screenshot
可能是空值,但裝置沒有
螢幕,或是記憶體不足,無法分配螢幕截圖。
螢幕截圖會與快照分開提供,因為呼叫端可能會想封鎖 在背景收集快照時變更檢視區塊。 還有許多用戶端對螢幕截圖不感興趣。
要求
名稱 | 類型 |
---|---|
encoding |
ImageEncoding
|
回應
名稱 | 類型 |
---|---|
screenshot |
Screenshot?
|
GetSnapshot
傳回裝置狀態的快照。
如果產生快照時發生問題,則「snapshot
」可能會是空白。
要求
名稱 | 類型 |
---|---|
params |
GetSnapshotParameters
|
回應
名稱 | 類型 |
---|---|
snapshot |
Snapshot
|
DeviceIdProvider
定義於 fuchsia.feedback/device_id_provider.fidl
提供裝置的意見回饋 ID。
意見回饋 ID 是一組永久性的 UUID,用於將意見回饋報告分組。ID 不可用於回報任何目的,但意見回饋除外。 例如,不可用於遙測。
GetId
傳回裝置的意見回饋 ID。
此方法遵循等待取得模式,且在 ID 開始之前,不會傳回值 上次通話已變更。
要求
<空白>
回應
名稱 | 類型 |
---|---|
feedback_id |
string[64]
|
LastRebootInfoProvider
在 fuchsia.feedback/last_reboot_info.fidl 中定義的
瞭解裝置上次關閉的原因。使用重新啟動字詞,而非關機 因為許多開發人員針對重新啟動和大多數的連線問題 元件,想瞭解系統重新啟動的原因。
取得
要求
<空白>
回應
名稱 | 類型 |
---|---|
last_reboot |
LastReboot
|
結構
註解
在 fuchsia.feedback/annotation.fidl 中定義
註解及其純 ASCII 字串金鑰。 註解是簡短的字串,例如主面板名稱或建構版本。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
key |
string[128]
|
無預設 | |
value |
string[1024]
|
無預設 |
連結資源
定義於 fuchsia.feedback/attachment.fidl
附件及其純 ASCII 字串金鑰。 附件是較大的物件,例如記錄檔。可以是二進位或文字資料。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
key |
string[128]
|
無預設 | |
value |
fuchsia.mem/Buffer
|
無預設 |
CrashReporter_FileReport_Response
在 fuchsia.feedback/crash_reporter.fidl 中定義
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
results |
FileReportResults
|
無預設 |
螢幕截圖資源
定義於 fuchsia.feedback/data_provider.fidl
畫面的編碼圖片。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
image |
fuchsia.mem/Buffer
|
無預設 | |
dimensions_in_px |
fuchsia.math/Size
|
無預設 |
ENUMS
FilingError 彈性
類型:uint32
在 fuchsia.feedback/crash_reporter.fidl 中定義
名稱 | 值 | 說明 |
---|---|---|
不明 |
0 |
|
INVALID_ARGS_ERROR |
1 |
|
SERVER_ERROR |
2 |
|
PERSISTENCE_ERROR |
3 |
|
QUOTA_REACHED_ERROR |
4 |
致勝秘訣彈性
類型:uint32
在 fuchsia.feedback/crash_reporter.fidl 中定義
「個人化記憶」是指非永久位置,例如建立 檔案系統
名稱 | 值 | 說明 |
---|---|---|
不明 |
0 |
|
REPORT_UPLOADED |
1 |
|
REPORT_ON_DISK |
2 |
|
REPORT_IN_MEMORY |
3 |
|
REPORT_NOT_FILED_USER_OPTED_OUT |
4 |
ImageEncoding 嚴格
類型:uint32
定義於 fuchsia.feedback/data_provider.fidl
圖片使用的編碼。
目前系統僅支援 PNG,但之後的螢幕截圖會是 其他編碼中。
名稱 | 值 | 說明 |
---|---|---|
PNG |
0 |
RebootReason 彈性
類型:uint16
在 fuchsia.feedback/last_reboot_info.fidl 中定義的
裝置上次重新啟動的原因。
名稱 | 值 | 說明 |
---|---|---|
不明 |
0 |
如果伺服器會傳送新的列舉值給用戶端,用戶端就會取得這個值 無法以編譯的方式進行編譯 新增:9
|
觸摸 |
2 |
裝置從冷狀態啟動。 這很可能是長時間未使用電源或裝置後所造成的結果 第一次使用 Fuchsia 系列手機 |
BRIEF_POWER_LOSS |
3 |
裝置曾短暫斷電,因此已重新啟動。 在某些硬體上,這可能是使用者中斷連線後重新連線 供需快速接續運作 |
胸罩 |
4 |
裝置因電壓低於允許的程度 (未達到 0) 而重新啟動。 |
KERNEL_PANIC |
5 |
|
SYSTEM_OUT_OF_MEMORY |
6 |
|
HARDWARE_WATCHDOG_TIMEOUT |
7 |
|
SOFTWARE_WATCHDOG_TIMEOUT |
8 |
|
ROOT_JOB_TERMINATION |
19 |
使用者空間根工作已終止,因此裝置重新啟動,最有可能的原因是 因此關鍵程序停止運作 |
USER_REQUEST |
9 |
裝置使用者重新啟動,因此裝置重新啟動。使用者可以是 代表真人或與裝置互動的程式,如 SL4F 或 RCS |
SYSTEM_UPDATE |
10 |
裝置因 OTA 問題而重新啟動。 |
RETRY_SYSTEM_UPDATE |
17 |
無法執行 OTA,因此我們想重試,因此裝置已重新啟動。 |
HIGH_TEMPERATURE |
11 |
系統判定裝置過熱,因此已重新啟動。 |
SESSION_FAILURE |
12 |
由於工作階段發生問題或工作階段管理員,因此裝置已重新啟動 無法從錯誤復原。 |
SYSMGR_FAILURE |
15 |
系統管理員 (sysmgr) 無法從 錯誤。 |
FACTORY_DATA_RESET |
14 |
裝置在恢復原廠設定後重新啟動。 請參閱 fuchsia.recovery.FactoryReset。 |
CRITICAL_COMPONENT_FAILURE |
16 |
由 sysmgr 管理的重要元件執行失敗,因此裝置已重新啟動。 |
ZBI_SWAP |
18 |
裝置已重新啟動,以套用 Zircon 開機映像檔替換。 |
資料表
註解
定義於 fuchsia.feedback/data_provider.fidl
裝置狀態的註解。
用戶端通常會將資料直接上傳至伺服器。資料則是 用戶端可直接轉送至伺服器的任意鍵/值組合。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
annotations |
vector<Annotation>[64]
|
鍵/值字串組合的向量。金鑰保證不會重複。 |
ComponentData
定義於 fuchsia.feedback/data_register.fidl
會附加至意見回饋報告的元件已知元件,但不會向平台公開的資料。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
namespace |
string[32]
|
與資料相關聯的頂層命名空間:
|
2 |
annotations |
vector<Annotation>[16]
|
鍵/值字串組合的向量,例如 索引鍵:
|
CrashReport 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表當機報告。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
program_name |
string[1024]
|
當機的程式名稱,例如程序或元件名稱。 |
2 |
specific_report |
SpecificCrashReport
|
根據當機類型產生的特定報告。 如果需要與當機程式相關的額外資訊,則應設定這個欄位 像是迷你傾印 |
3 |
annotations |
vector<Annotation>[32]
|
鍵/值字串組合的向量,代表應附加至 當機報告 鍵不得重複,因為向量中特定鍵最新的值將 考慮成形 |
4 |
attachments |
vector<Attachment>[16]
|
鍵/值字串對 VMO 的組合,代表應遵循的任意資料 圖示。 鍵不得重複,因為向量中特定鍵最新的值將 考慮成形 |
5 |
event_id |
string[128]
|
當機伺服器可使用的文字 ID,將相關的當機報告分組, 產生的內容 與當機簽章不同,共用相同 ID 的當機報告會對應 當機,但也可能視為同一事件,例如在低階事件中發生當機 導致高階 UI 小工具當機。 |
6 |
program_uptime |
zx/Duration
|
程式在當機前執行的時間長度。 |
7 |
crash_signature |
string[128]
|
當機伺服器可用來追蹤一段時間內相同當機情形的文字簽章,例如 「核心-恐慌」或「oom」這個簽名的優先順序高於任何自動簽名 與事件 ID 不同,共用相同簽名的當機報告會對應到同一個當機事件。 但會在多個事件發生時,例如在伺服器上發生空值指標例外狀況 先前提過同一個要求 必須使用小寫 [a-z][a-z-]*,亦即只能使用小寫英文字母和連字號,否則會造成 ZX_ERR_INVALID_ARGS 集錦。 |
8 |
is_fatal |
bool
|
指出當機報告是否為 執行中程序、元件、 或是系統本身 以下列舉幾個會導致嚴重當機報告的事件:
以下列舉幾個會導致非嚴重當機報告的事件:
這個欄位主要用於按照嚴重錯誤、非嚴重錯誤及不明狀況分類當機 分別設為 True、設為 False 或未設定 |
CrashReportingProduct
定義於 fuchsia.feedback/crash_register.fidl
要回報給當機伺服器的產品資訊。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
name |
string
|
當機伺服器上的產品名稱。
|
2 |
version |
string
|
元件的選用產品版本。
如未指定版本,系統就不會向當機伺服器回報任何版本。 |
3 |
channel |
string
|
元件產品發布頻道,例如「canary」、「beta」、「stable」。 如未指定管道,系統就不會將任何裝置回報給當機伺服器。 |
FileReportResults
在 fuchsia.feedback/crash_reporter.fidl 中定義
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
result |
FilingSuccess
|
成功類型。 |
2 |
report_id |
string[64]
|
|result| 代表非空白的值Filing 成功:REPORT_UPLOADED。 |
GetAnnotationsParameters
定義於 fuchsia.feedback/data_provider.fidl
DataProvider::GetAnnotations() 方法的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
collection_timeout_per_annotation |
zx/Duration
|
系統會從平台中的多個位置同時收集註解,且每個位置都有 逾時。
|
GetSnapshotParameters 資源
定義於 fuchsia.feedback/data_provider.fidl
DataProvider::GetSnapshot() 方法的參數。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
collection_timeout_per_data |
zx/Duration
|
快照匯總了來自平台的各種資料 (裝置運作時間、記錄、檢查資料、 等) 平行收集的資料。系統內部會在 逾時。
請注意,這無法控制快照產生作業總共需要多少時間
也就是建立比 |
2 |
response_channel |
handle<channel>
|
如果設定,系統會以 |fuchsia.io.File| 格式傳送快照封存檔改為透過這個管道 放入 |封存|欄位 |快照|中的欄位回應。這個方法通常很實用 用戶端位於主機上,但不支援 VMO。 |
LastReboot
在 fuchsia.feedback/last_reboot_info.fidl 中定義的
裝置上次重新啟動原因的相關資訊。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
graceful |
bool
|
上次重新啟動是否安全良好,例如裝置沒有因發生錯誤而重新啟動 再以受控的方式重新啟動 這個欄位可讓用戶端瞭解上次重新啟動是否安全,而不必 剖析非必要的 |原因|] 欄位。這在以下時機相當實用,|原因|:例如,由於 都不會知道重新啟動是「優雅」還是 會不斷演變以支援新的 RebootReason 值,而用戶端尚未更新。 如果 |reason|,這個欄位一律為值而不是每個 Pod 的名稱但是,|理由|可能不是 一律要有值。 |
2 |
reason |
RebootReason
|
裝置上次重新啟動的原因。 |
3 |
uptime |
zx/Duration
|
裝置重新啟動前的運作時間。 |
NativeCrashReport 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表原生例外狀況的當機報告,因為用戶端已建構 Minidump。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
minidump |
fuchsia.mem/Buffer
|
以 Minidump 格式為基礎的核心傾印。 |
2 |
process_name |
string[64]
|
異常終止程序的名稱。 |
3 |
process_koid |
zx/Koid
|
當機程序的核心物件 ID。 |
4 |
thread_name |
string[64]
|
當機的執行緒名稱。 |
5 |
thread_koid |
zx/Koid
|
當機執行緒的核心物件 ID。 |
RuntimeCrashReport 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表執行階段例外狀況的當機報告 (適用於多數語言)。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
exception_type |
string[128]
|
例外狀況類型,例如「FileSystemException」。 |
2 |
exception_message |
string[4096]
|
例外狀況訊息,例如「無法開啟檔案」。 |
3 |
exception_stack_trace |
fuchsia.mem/Buffer
|
例外狀況堆疊追蹤的文字表示法。 |
快照資源
定義於 fuchsia.feedback/data_provider.fidl
裝置狀態快照。
用戶端通常會將資料直接上傳至伺服器。資料則是 用戶端可直接轉送至伺服器的任意鍵/值組合。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
archive |
Attachment
|
<檔案名稱,ZIP 封存檔>配對。 ZIP 封存檔包含數個檔案,檔案則對應至收集來源的各種資料 平台。所有註解通常都會有一個檔案 (裝置運作時間、版本) 版本) 以及每個附件一個檔案 (記錄、檢查資料等)。 如果 |response_channel| 未設定,就無法設定並未設定在要求中提供的資訊 |
2 |
annotations |
vector<Annotation>[64]
|
鍵/值字串組合的向量。金鑰保證不會重複。 雖然註解本身就包含在 ZIP 封存檔中,但有些客戶也會希望 分開索引或擴增,因此我們另外提供它們。 |
聯合國
CrashReporter_FileReport_Result 的嚴格
在 fuchsia.feedback/crash_reporter.fidl 中定義
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
CrashReporter_FileReport_Response
|
|
2 |
err |
FilingError
|
SpecificCrashReport 彈性 資源
在 fuchsia.feedback/crash_reporter.fidl 中定義
代表特定當機報告。
伺服器需要以特殊方式處理特定註解及
針對特定當機類型的附件,例如 RuntimeCrashReport
代表 JavaScript。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
2 |
native |
NativeCrashReport
|
適用於原生例外狀況。 |
3 |
dart |
RuntimeCrashReport
|
適用於 Dart 例外狀況。 |
觀測站
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAX_ANNOTATION_KEY_LENGTH |
128
|
uint64 |
註解鍵的長度上限。 新增日期:23
|
MAX_ANNOTATION_VALUE_LENGTH |
1024
|
uint64 |
註解值的長度上限。 新增日期:23
|
MAX_CRASH_SIGNATURE_LENGTH |
128
|
uint32 |
|
MAX_EVENT_ID_LENGTH |
128
|
uint32 |
|
MAX_EXCEPTION_MESSAGE_LENGTH |
4096
|
uint32 |
新增:10
|
MAX_EXCEPTION_TYPE_LENGTH |
128
|
uint32 |
|
MAX_NAMESPACE_LENGTH |
32
|
uint32 |
|
MAX_NUM_ANNOTATIONS_PER_CRASH_REPORT |
32
|
uint32 |
|
MAX_NUM_ANNOTATIONS_PER_NAMESPACE |
16
|
uint32 |
|
MAX_NUM_ANNOTATIONS_PROVIDED |
64
|
uint32 |
|
MAX_NUM_ATTACHMENTS_PER_CRASH_REPORT |
16
|
uint32 |
|
MAX_PROCESS_NAME_LENGTH |
64
|
uint32 |
|
MAX_PROGRAM_NAME_LENGTH |
1024
|
uint32 |
|
MAX_REPORT_ID_LENGTH |
64
|
uint32 |
新增日期:11
|
MAX_THREAD_NAME_LENGTH |
64
|
uint32 |