專家
收集器
定義於 fuchsia.memory.heapdump.client/client.fidl
要求及擷取記憶體設定檔的通訊協定。
DownloadStoredSnapshot
擷取已儲存的快照。
要求
名稱 | 類型 |
---|---|
payload |
CollectorDownloadStoredSnapshotRequest
|
ListStoredSnapshots
擷取所有可用快照的清單。
要求
名稱 | 類型 |
---|---|
payload |
CollectorListStoredSnapshotsRequest
|
TakeLiveSnapshot
在檢測程序中取得目前即時配置的數據匯報。
要求
名稱 | 類型 |
---|---|
payload |
CollectorTakeLiveSnapshotRequest
|
SnapshotReceiver
定義於 fuchsia.memory.heapdump.client/client.fidl
將快照做為元素串流傳輸的通訊協定。
批次
傳送一批快照元素。
系統會重複呼叫此函式,直到所有元素都保留完畢,最後再以空白向量表示串流結束。
要求
名稱 | 類型 |
---|---|
batch |
vector<SnapshotElement>
|
回應
<空白>
報告錯誤
回報錯誤。不會發生其他批次或錯誤。
要求
名稱 | 類型 |
---|---|
error |
CollectorError
|
回應
<空白>
儲存的 SnapshotIterator
定義於 fuchsia.memory.heapdump.client/client.fidl
擷取 StoredSnapshots 清單的通訊協定。
取得下一步
擷取下一批 StoredSnapshots 元素。
空白的回應表示清單結尾。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
StoredSnapshotIterator_GetNext_Result
|
結構
版本 ID
定義於 fuchsia.memory.heapdump.client/client.fidl
ELF 版本 ID。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
value |
vector<uint8>[32]
|
無預設 |
StoredSnapshotIterator_GetNext_Response
定義於 fuchsia.memory.heapdump.client/client.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
batch |
vector<StoredSnapshot>
|
無預設 |
表情符號
CollectorError 彈性
類型:uint32
定義於 fuchsia.memory.heapdump.client/client.fidl
方法失敗的原因。
名稱 | 值 | 說明 |
---|---|---|
PROCESS_SELECTOR_UNSUPPORTED (不支援) |
1 |
不支援指定的 ProcessSelector 值。 |
PROCESS_SELECTOR_NO_MATCH |
2 |
指定的 ProcessSelector 值不符合任何程序。 |
PROCESS_SELECTOR_AMBIGUOUS |
3 |
指定的 ProcessSelector 值符合多個程序,但要求的作業需要不重複的比對。 |
LIVE_SNAPSHOT_失敗 |
4 |
無法拍攝即時快照。 |
商店未找到「STORED」 |
5 |
要求的 StoredSnapshot 不存在。 |
資料表
配置
定義於 fuchsia.memory.heapdump.client/client.fidl
分配的記憶體區塊。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
address |
uint64
|
記憶體區塊的位址。 |
2 |
size |
uint64
|
區塊大小,以位元組為單位。 |
3 |
stack_trace_key |
StackTraceKey
|
配置網站的堆疊追蹤。 |
4 |
timestamp |
zx/Time
|
分配時間戳記。 |
5 |
thread_info_key |
ThreadInfoKey
|
分配執行緒。 |
封鎖內容
定義於 fuchsia.memory.heapdump.client/client.fidl
分配記憶體區塊的內容。
為了避免超過管道的訊息大小上限,您可以將較大的區塊分割為多個片段。接收器應準備處理具有相同位址的多個 BlockContent,並串連酬載以重新組合。每個區塊的重新組合大小一律與對應配置的大小欄位相符。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
address |
uint64
|
對應記憶體區塊的位址。 |
2 |
contents |
vector<uint8>
|
酬載。 |
CollectorDownloadStoredSnapshotRequest 資源
定義於 fuchsia.memory.heapdump.client/client.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
snapshot_id |
uint32
|
要下載的快照的 ID。 可以使用 ListStoredSnapshots 擷取可用快照的清單。 必填。 |
2 |
receiver |
SnapshotReceiver
|
要求快照的元素會傳送到哪裡。 必填。 |
CollectorListStoredSnapshotsRequest 資源
定義於 fuchsia.memory.heapdump.client/client.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
iterator |
server_end<StoredSnapshotIterator>
|
用來擷取結果的 StoredSnapshotIterator 的 server_end。 必填。 |
2 |
process_selector |
ProcessSelector
|
如有快照,則只會擷取參照相符程序的快照。 |
CollectorTakeLiveSnapshotRequest 資源
定義於 fuchsia.memory.heapdump.client/client.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
process_selector |
ProcessSelector
|
運作的檢測程序。 必填。 |
2 |
receiver |
SnapshotReceiver
|
要求快照的元素會傳送到哪裡。 必填。 |
3 |
with_contents |
bool
|
快照是否應包含每個記憶體區塊的內容。 如未設定,系統會假設值為 false。 |
可執行區域
定義於 fuchsia.memory.heapdump.client/client.fidl
記憶體區域,包含從 ELF 檔案載入的程式碼。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
address |
uint64
|
記憶體地區的位址。 |
2 |
size |
uint64
|
區域大小,以位元組為單位。 |
3 |
file_offset |
uint64
|
對應區域內第一個位元組的檔案偏移量。 |
4 |
build_id |
BuildId
|
ELF 檔案的版本 ID。 |
StackTrace
定義於 fuchsia.memory.heapdump.client/client.fidl
堆疊追蹤。
為了避免超過管道的訊息大小上限,您可以將堆疊追蹤分割成多個區塊。接收器應準備處理多個具有相同金鑰的 StackTrace 元素,並串連程式位址來重新組合這些元素。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
stack_trace_key |
StackTraceKey
|
可在父項快照中識別此堆疊追蹤的專屬編號。 |
2 |
program_addresses |
vector<uint64>
|
與堆疊每個影格對應的程式計數器。 項目會按照反向呼叫順序列出:第一個項目是指分葉框架,而最後一個項目則是指呼叫堆疊根層級的頁框。 |
儲存的快照
定義於 fuchsia.memory.heapdump.client/client.fidl
儲存在裝置上的快照,且可供下載。
應用程式啟動的快照屬於這個類別。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
snapshot_id |
uint32
|
可在收集器中識別此快照的專屬編號。 |
2 |
snapshot_name |
string[32]
|
為這張快照指定的名稱。 |
3 |
process_koid |
zx/Koid
|
快照所參照程序的 koid。 |
4 |
process_name |
string[32]
|
這個快照參照的程序名稱。 |
執行緒資訊
定義於 fuchsia.memory.heapdump.client/client.fidl
特定執行緒的資訊。
注意:在某些情況下,特定 koid 可能會有多個項目 (例如執行緒在不同的配置之間變更其名稱)。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
thread_info_key |
ThreadInfoKey
|
可在父項快照中識別此項目的專屬編號。 |
2 |
koid |
zx/Koid
|
這個項目參照的執行緒 koid。 |
3 |
name |
string[32]
|
這個項目參照的執行緒名稱。 |
聯合國
ProcessSelector 彈性
定義於 fuchsia.memory.heapdump.client/client.fidl
使用篩選器,將作業限制於可用程序的子集。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
by_name |
string[32]
|
比對所有與指定的 ZX_PROP_NAME 的程序。 |
2 |
by_koid |
zx/Koid
|
將程序與指定的 koid 進行比對。 |
SnapshotElement 彈性
定義於 fuchsia.memory.heapdump.client/client.fidl
屬於快照中的元素。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
allocation |
Allocation
|
|
2 |
stack_trace |
StackTrace
|
|
3 |
executable_region |
ExecutableRegion
|
|
4 |
block_contents |
BlockContents
|
|
5 |
thread_info |
ThreadInfo
|
StoredSnapshotIterator_GetNext_Result strict
定義於 fuchsia.memory.heapdump.client/client.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
StoredSnapshotIterator_GetNext_Response
|
|
2 |
err |
CollectorError
|
場景
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAX_BUILD_ID_LENGTH |
32
|
uint32 |
別名
名稱 | 值 | 說明 |
---|---|---|
StackTraceKey |
uint64 |
|
ThreadInfoKey |
uint64 |