> ## Documentation Index
> Fetch the complete documentation index at: https://dragonwingdocs.qualcomm.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GLink 调试

> 诊断 GLink 传输状态、通道状态、意图、日志和子系统重启失败。

GLink 故障通常落在以下四个方面之一：传输始终不可用、版本协商失败、通道无法进入已连接状态，或者在传输或重启后数据所有权未归还。

## 首先检查传输状态

传输必须从 down 状态经过协商进入 opened 状态，通道才能通信。永久 down 或失败的传输指向的是传输插件、其物理链路或其依赖初始化，而不是客户端通道。

传输插件负责：

* 从物理传输读写数据
* 报告可读数据和可写空间
* 转换核心命令和载荷
* 干净地关闭传输

共享内存原生传输还依赖于双向的共享内存和中断。其他插件有其各自的传输特定依赖。

## 检查通道状态和回调

通道并不因为打开调用返回了句柄就已就绪。请确认：

1. 所请求的 edge、传输和通道名称与远端匹配。
2. 收到了已连接通知。
3. 接收端排队了足够大小的意图，能够容纳预期的报文。
4. 触发了接收通知。
5. 接收端调用了完成函数。
6. 发送端收到了发送完成通知。

缺失发送完成通知通常意味着远端尚未消费接收缓冲区；而缺失接收通知通常意味着没有匹配的意图，或者报文在传递前被拒绝。

## 启用日志

GLink 核心和 loopback 服务器提供日志控制。支持的日志模式有：

* **Informational** —— 默认信息性消息
* **Debug** —— 详细的协议和状态调试信息
* **Performance** —— 仅性能日志

这些模式可以组合使用。Performance 模式会抑制其他日志，仅保留通过性能日志宏发出的消息。

## 诊断协商失败

两端独立启动版本协商。这不是竞争条件：只有两端协商序列都完成之后传输才会打开，两端最终会收敛于兼容的版本和特性集。

请检查：

* 无版本确认
* 所选版本为零（未找到兼容版本）
* 对端未接受某些特性
* 协商在传输能可靠交换命令之前开始
* 传输配置声明了错误的支持版本

版本不匹配时应选择双方共同支持的较低版本。仅当双方都声明支持时才应启用可选特性。

## 诊断缓冲区所有权

在每个阶段追踪传入的私有令牌：

1. 排队一个接收意图。
2. 带数据的接收通知。
3. 调用完成函数。
4. 收到发送完成通知。

如果通道在报文或意图仍处于挂起状态时关闭，客户端必须为接收意图和发送报文的私有数据处理 abort 回调。在收到 abort 通知之前释放属于回调的内存可能导致 use-after-free 或缓冲区所有权永久泄漏。

## 子系统重启的症状

一次重启可能影响连接到某条 edge 的所有通道。请确认重启路径：

* 识别受影响的子系统及其 GLink edge
* 通知相关端点
* 关闭或中止受影响的通道
* 归还接收意图和发送私有数据
* 在重启完成前等待清理
* 在远端再次可用后重新打开通道

不要以传输重新连接作为所有通道都已恢复的证据；通道状态和缓冲区所有权必须单独检查。
