PROTOCOLS
ComponentDataRegister
在 fuchsia.feedback/data_register.fidl 中定义
注册要在反馈报告(崩溃、用户反馈或 bug 报告)中附加的数据。
组件可以使用此 API 来增强附加到所有反馈报告的数据。默认情况下 反馈服务会附加向平台公开的数据此协议对于数据非常有用 某些产品中特定组件已知,但不向平台公开。
标题 ZX_ERR_INVALID_ARGS 表示客户端发送的请求无效。请参阅 下方分别列出了每个请求无效的原因
标题 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
更新/插入(参见上文),并在操作完成时通知客户端。
这样,客户端可以防止提交崩溃报告与调用更新/插入之间出现争用情况。 否则,如果在更新/插入操作完成之前提交崩溃报告,则崩溃报告将 归因于错误的商品,从而导致崩溃数据可能不正确。
请求
名称 | 类型 |
---|---|
component_url |
string[2083]
|
product |
CrashReportingProduct
|
响应
<空>
DataProvider
在 fuchsia.feedback/data_provider.fidl 中定义
提供可附加到反馈报告中的数据,例如系统提交的崩溃报告、 用户提交的用户反馈报告或开发者提交的 bug 报告。
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
|
无默认设置 |
精英
FilingError 柔性
类型:uint32
在 fuchsia.feedback/crash_reporter.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
未知 |
0 |
|
INVALID_ARGS_ERROR |
1 |
|
SERVER_ERROR |
2 |
|
PERSISTENCE_ERROR |
3 |
|
QUOTA_REACHED_ERROR |
4 |
FilingSuccess 柔性
类型: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 对与以下项相关的多个崩溃报告进行分组: 事件。 与崩溃签名不同,共用相同 ID 的崩溃报告会对应不同的 但可视为属于同一事件,例如低层级中的崩溃 服务器导致高级界面 widget 崩溃。 |
6 |
program_uptime |
zx/Duration
|
程序在崩溃前运行了多长时间。 |
7 |
crash_signature |
string[128]
|
崩溃服务器可用来跟踪一段时间内同一崩溃问题的文本签名,例如, “kernel-panic”即“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|是 FilingSuccess::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| 的形式发送。改为观看此频道 在 |archive|字段(位于 |Snapshot|中)响应。这通常适用于 客户端位于主机上,不支持 VMO。 |
LastReboot
在 fuchsia.feedback/last_reboot_info.fidl 中定义
有关设备上次重新启动原因的信息。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
graceful |
bool
|
上次重新启动是否正常,即设备没有因出错而重新启动 并以可控方式重新启动 此字段可让客户端了解上次重新启动是否正常, 解析可选的 |reason|字段。当 |reason|未设置,即 系统只知道重新启动很正常,或 API 何时 不断改进,以支持新的 RebootReason 值,并且客户端尚未更新。 如果 |reason|,则此字段始终包含值。但是,|原因|可能不会 始终具有此字段提供的值。 |
2 |
reason |
RebootReason
|
设备上次重新启动的原因。 |
3 |
uptime |
zx/Duration
|
设备在重新启动之前的正常运行时间。 |
NativeCrashReport 资源
在 fuchsia.feedback/crash_reporter.fidl 中定义
表示客户端已针对其构建迷你转储的原生异常的崩溃报告。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
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
|
一个 <filename, ZIParchive>配对。 该 ZIP 归档文件包含多个文件,这些文件与从该归档文件收集的各种数据相对应 平台。通常,所有注解(设备正常运行时间、版本 版本等),每个附件各有一个文件(日志、检查数据等)。 如果 |response_channel|,则未设置设置该字段。 |
2 |
annotations |
vector<Annotation>[64]
|
键值对字符串的向量。密钥保证是唯一的。 尽管该注释包含在 ZIP 存档中,但某些客户还希望它们 以便对它们进行索引或扩充,因此我们也单独提供它们。 |
联合体
CrashReporter_FileReport_Result 严格
在 fuchsia.feedback/crash_reporter.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
CrashReporter_FileReport_Response
|
|
2 |
err |
FilingError
|
SpecificCrashReport 灵活 资源
在 fuchsia.feedback/crash_reporter.fidl 中定义
表示特定的崩溃报告。
如果服务器需要处理特定注释和
附件,例如 JavaScript 的 RuntimeCrashReport
。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
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 |