# 故障排除和调试

<cite>
**本文引用的文件**
- [README.md](file://README.md)
- [GFramework.Core/README.md](file://GFramework.Core/README.md)
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs)
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs)
- [GFramework.Core/coroutine/CoroutineHandle.cs](file://GFramework.Core/coroutine/CoroutineHandle.cs)
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs)
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs)
- [GFramework.Core/query/QueryBus.cs](file://GFramework.Core/query/QueryBus.cs)
- [GFramework.Core/logging/AbstractLogger.cs](file://GFramework.Core/logging/AbstractLogger.cs)
- [GFramework.Core/logging/ConsoleLogger.cs](file://GFramework.Core/logging/ConsoleLogger.cs)
- [GFramework.Core/logging/ConsoleLoggerFactory.cs](file://GFramework.Core/logging/ConsoleLoggerFactory.cs)
- [GFramework.Core/property/BindableProperty.cs](file://GFramework.Core/property/BindableProperty.cs)
</cite>

## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构总览](#架构总览)
5. [详细组件分析](#详细组件分析)
6. [依赖分析](#依赖分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [结论](#结论)
10. [附录](#附录)

## 简介
本指南面向使用 GFramework 的开发者，聚焦于常见问题的系统性排查与调试，涵盖架构初始化、事件处理、协程执行、依赖注入等模块的故障定位方法；同时提供日志配置、断点调试、性能分析与内存泄漏检测等实用技巧，以及生产环境应急处理流程与错误消息解读。

## 项目结构
GFramework 采用分层与模块化设计，核心模块位于 GFramework.Core，平台特定实现位于 GFramework.Godot，源码生成器位于 GFramework.SourceGenerators。下图展示与故障排除密切相关的关键模块与交互：

```mermaid
graph TB
subgraph "核心模块"
A["架构<br/>Architecture.cs"]
B["事件总线<br/>EventBus.cs"]
C["协程调度器<br/>CoroutineScheduler.cs"]
D["IoC 容器<br/>IocContainer.cs"]
E["命令总线<br/>CommandBus.cs"]
F["查询总线<br/>QueryBus.cs"]
G["可绑定属性<br/>BindableProperty.cs"]
L["日志抽象<br/>AbstractLogger.cs"]
end
subgraph "平台实现"
P["Godot 扩展<br/>GFramework.Godot"]
end
A --> B
A --> D
A --> E
A --> F
A --> C
A --> G
L --> |"ConsoleLogger"| L
P --> |"节点扩展/信号"| A
```

图表来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L1-L569)
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L1-L392)
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L1-L373)
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs#L1-L62)
- [GFramework.Core/query/QueryBus.cs](file://GFramework.Core/query/QueryBus.cs#L1-L23)
- [GFramework.Core/property/BindableProperty.cs](file://GFramework.Core/property/BindableProperty.cs#L1-L135)
- [GFramework.Core/logging/AbstractLogger.cs](file://GFramework.Core/logging/AbstractLogger.cs#L1-L493)

章节来源
- [README.md](file://README.md#L235-L283)
- [GFramework.Core/README.md](file://GFramework.Core/README.md#L40-L108)

## 核心组件
- 架构（Architecture）：统一生命周期管理、阶段转换、组件注册与初始化、销毁流程。
- 事件总线（EventBus）：类型安全事件发布/订阅，支持全局事件管理。
- 协程调度器（CoroutineScheduler）：协程运行、暂停、恢复、终止、按标签清理。
- IoC 容器（IocContainer）：注册/获取实例、冻结保护、并发安全。
- 命令/查询总线（CommandBus/QueryBus）：封装写/读操作的执行入口。
- 可绑定属性（BindableProperty）：响应式数据绑定与变更通知。
- 日志系统（AbstractLogger/ConsoleLogger/ConsoleLoggerFactory）：结构化日志、级别过滤、彩色输出。

章节来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L135-L398)
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L1-L392)
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L1-L373)
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs#L1-L62)
- [GFramework.Core/query/QueryBus.cs](file://GFramework.Core/query/QueryBus.cs#L1-L23)
- [GFramework.Core/property/BindableProperty.cs](file://GFramework.Core/property/BindableProperty.cs#L1-L135)
- [GFramework.Core/logging/AbstractLogger.cs](file://GFramework.Core/logging/AbstractLogger.cs#L1-L493)
- [GFramework.Core/logging/ConsoleLogger.cs](file://GFramework.Core/logging/ConsoleLogger.cs#L1-L81)
- [GFramework.Core/logging/ConsoleLoggerFactory.cs](file://GFramework.Core/logging/ConsoleLoggerFactory.cs#L1-L20)

## 架构总览
下图展示典型“命令-事件-系统-模型”的执行链路，便于定位事件未到达、命令未执行、系统未响应等问题：

```mermaid
sequenceDiagram
participant V as "视图/控制器"
participant CMD as "命令总线"
participant SYS as "系统"
participant MOD as "模型"
participant EVT as "事件总线"
V->>CMD : "发送命令"
CMD->>SYS : "执行命令"
SYS->>MOD : "修改状态"
SYS->>EVT : "发送事件"
EVT-->>V : "通知控制器"
EVT-->>SYS : "通知其他系统"
EVT-->>MOD : "通知模型"
```

图表来源
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs#L1-L62)
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L350-L398)

## 详细组件分析

### 架构初始化与生命周期
- 关键点
  - 初始化阶段顺序：工具 → 模型 → 系统 → 就绪；阶段转换受配置与常量约束。
  - 组件注册时机：初始化前可注册，就绪后可配置是否允许晚注册。
  - 销毁流程：按注册逆序销毁，捕获单个组件异常并继续销毁。
- 常见问题
  - 阶段转换非法：检查配置与阶段常量映射。
  - 就绪后注册组件：根据配置抛出异常。
  - 组件未初始化：确认 Init() 是否正确注册并进入相应阶段。
- 调试建议
  - 在 Initialize()/InitializeAsync() 前后设置断点，观察阶段变化与日志。
  - 使用日志级别提升到 Debug/Trace，查看组件注册与初始化明细。

```mermaid
flowchart TD
S["开始初始化"] --> Cfg["应用配置/环境"]
Cfg --> UserInit["调用 Init()"]
UserInit --> PhaseU["进入 BeforeUtilityInit"]
PhaseU --> U["初始化工具"]
U --> PhaseA["进入 AfterUtilityInit"]
PhaseA --> PhaseM["进入 BeforeModelInit"]
PhaseM --> M["初始化模型"]
M --> PhaseB["进入 AfterModelInit"]
PhaseB --> PhaseS["进入 BeforeSystemInit"]
PhaseS --> Sys["初始化系统"]
Sys --> PhaseEnd["进入 Ready"]
PhaseEnd --> Freeze["冻结容器"]
```

图表来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L526-L566)

章节来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L135-L398)

### 事件系统与事件处理
- 关键点
  - EventBus 提供 Send/Register/UnRegister，支持泛型事件自动创建与检索。
  - EasyEvents 作为全局事件管理器，按类型缓存事件实例。
- 常见问题
  - 事件未触发：检查事件类型是否正确、是否在正确阶段注册、是否被注销。
  - 事件重复：确认 UnRegister 是否与 Register 成对出现。
  - 泛型事件缺失构造函数：Send<T>() 要求 T 具有无参构造。
- 调试建议
  - 在注册与发送处设置断点，核对事件类型与回调。
  - 使用 UnRegisterList 统一管理注销，避免遗漏。

```mermaid
sequenceDiagram
participant C as "组件"
participant EB as "EventBus"
participant EE as "EasyEvents"
participant L as "监听者"
C->>EB : "Register<T>(回调)"
EB->>EE : "GetOrAddEvent<T>()"
C->>EB : "Send<T>(实例/无参)"
EB->>EE : "GetOrAddEvent<T>()"
EE-->>EB : "事件实例"
EB-->>L : "触发回调"
```

图表来源
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/events/EasyEvents.cs](file://GFramework.Core/events/EasyEvents.cs#L1-L85)

章节来源
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/events/EasyEvents.cs](file://GFramework.Core/events/EasyEvents.cs#L1-L85)

### 协程执行与调度
- 关键点
  - 协程句柄唯一标识，支持暂停/恢复/终止/按标签清理。
  - 调度器按时间片推进协程，处理等待指令与异常。
- 常见问题
  - 协程卡住：检查等待指令是否完成、是否被其他协程持有。
  - 句柄无效：确认 Run 返回的句柄是否有效、是否被提前回收。
  - 异常吞没：OnError 会打印异常并完成协程，需检查控制台输出。
- 调试建议
  - 使用 ActiveCoroutineCount 与标签追踪协程生命周期。
  - 对长时间运行的协程设置超时或阶段性日志。

```mermaid
flowchart TD
R["Run(协程, 标签)"] --> H["生成句柄/元数据"]
H --> P["预热(推进第一步)"]
P --> U["Update(遍历槽位)"]
U --> W["等待指令?"]
W --> |否| N["MoveNext()"]
W --> |是| WT["等待完成?"]
WT --> |否| U
WT --> |是| N
N --> Done{"完成?"}
Done --> |是| K["Complete(唤醒等待者/移除标签)"]
Done --> |否| U
```

图表来源
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L37-L121)
- [GFramework.Core/coroutine/CoroutineHandle.cs](file://GFramework.Core/coroutine/CoroutineHandle.cs#L1-L94)

章节来源
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L1-L392)
- [GFramework.Core/coroutine/CoroutineHandle.cs](file://GFramework.Core/coroutine/CoroutineHandle.cs#L1-L94)

### 依赖注入与容器
- 关键点
  - RegisterPlurality 将实例注册到其实现的所有接口与具体类型。
  - Freeze 后禁止注册，避免运行期变更。
  - Get/GetRequired/GetAll 提供不同粒度的获取策略。
- 常见问题
  - “容器已冻结”：在架构 Ready 后尝试注册。
  - “未注册实例/多个实例”：GetRequired 会在 0 或 >1 时抛出异常。
  - 多次注册导致重复：确认 RegisterPlurality 的调用次数。
- 调试建议
  - 在 Freeze 前后分别记录注册清单，定位异常注册点。
  - 使用 GetAllSorted 按策略排序获取实例，辅助调试。

```mermaid
classDiagram
class IocContainer {
+RegisterPlurality(instance)
+RegisterSingleton~T~(instance)
+Register~T~(instance)
+Get~T~()
+GetRequired~T~()
+GetAll~T~()
+Freeze()
+Contains~T~()
}
class ISystem
class IModel
class IUtility
IocContainer --> ISystem : "注册系统"
IocContainer --> IModel : "注册模型"
IocContainer --> IUtility : "注册工具"
```

图表来源
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L1-L373)

章节来源
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L1-L373)

### 命令与查询执行
- 关键点
  - CommandBus 支持同步/异步命令执行，参数校验严格。
  - QueryBus 直接调用查询的 Do() 返回结果。
- 常见问题
  - 命令为空：Send 会抛出空引用异常。
  - 查询未返回预期结果：检查查询实现与输入。
- 调试建议
  - 在命令/查询的 OnExecute/Do 前后设置断点，核对输入与输出。

章节来源
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs#L1-L62)
- [GFramework.Core/query/QueryBus.cs](file://GFramework.Core/query/QueryBus.cs#L1-L23)

### 可绑定属性与数据绑定
- 关键点
  - Value 设置时比较新旧值，相等则跳过；支持自定义比较器。
  - Register/UnRegister 管理变更回调；RegisterWithInitValue 立即触发一次回调。
- 常见问题
  - 回调未触发：确认是否注册、是否被注销、值是否真正改变。
  - 性能问题：大量小值频繁变更可考虑合并更新。
- 调试建议
  - 使用 RegisterWithInitValue 验证初始值与回调链路。

章节来源
- [GFramework.Core/property/BindableProperty.cs](file://GFramework.Core/property/BindableProperty.cs#L1-L135)

### 日志系统与调试
- 关键点
  - AbstractLogger 提供级别判断与格式化；ConsoleLogger 输出到控制台并支持彩色。
  - ConsoleLoggerFactory 创建 ConsoleLogger，可指定最小级别。
- 常见问题
  - 日志级别过低：调整最小级别以显示 Debug/Trace。
  - 输出无颜色：检查 writer 是否为 Console.Out。
- 调试建议
  - 在关键路径调用 Info/Debug/Trace，配合断点逐步验证。
  - 生产环境可切换到更高日志级别以减少开销。

章节来源
- [GFramework.Core/logging/AbstractLogger.cs](file://GFramework.Core/logging/AbstractLogger.cs#L1-L493)
- [GFramework.Core/logging/ConsoleLogger.cs](file://GFramework.Core/logging/ConsoleLogger.cs#L1-L81)
- [GFramework.Core/logging/ConsoleLoggerFactory.cs](file://GFramework.Core/logging/ConsoleLoggerFactory.cs#L1-L20)

## 依赖分析
- 组件耦合
  - Architecture 依赖 IoC 容器、事件总线、环境与服务，形成中心枢纽。
  - CommandBus/QueryBus 依赖具体命令/查询实现，保持解耦。
  - EventBus/EasyEvents 为全局事件通道，降低模块间耦合。
- 外部依赖
  - 平台特定扩展（如 Godot）通过扩展方法接入，不影响 Core 模块。
- 潜在循环依赖
  - 通过接口与总线解耦，避免直接循环引用。

```mermaid
graph LR
Arch["Architecture"] --> IOC["IocContainer"]
Arch --> EB["EventBus"]
Arch --> CMD["CommandBus"]
Arch --> QRY["QueryBus"]
Arch --> CR["CoroutineScheduler"]
EB --> EP["EasyEvents"]
LOG["ConsoleLogger"] --> ABS["AbstractLogger"]
```

图表来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L1-L569)
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L1-L392)
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L1-L373)
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs#L1-L62)
- [GFramework.Core/query/QueryBus.cs](file://GFramework.Core/query/QueryBus.cs#L1-L23)
- [GFramework.Core/logging/AbstractLogger.cs](file://GFramework.Core/logging/AbstractLogger.cs#L1-L493)
- [GFramework.Core/logging/ConsoleLogger.cs](file://GFramework.Core/logging/ConsoleLogger.cs#L1-L81)

## 性能考虑
- CPU 使用率
  - 协程调度器 Update 需在主循环中调用；避免在 Update 中执行重型任务。
  - 使用日志级别限制与异步化（IAsyncInitializable）降低主线程压力。
- 内存占用
  - 使用 UnRegisterList 统一注销事件与属性回调，防止对象无法回收。
  - 容器冻结后避免动态注册，减少运行期开销。
- 网络延迟
  - 事件与命令为本地调用，网络相关问题不在 Core 范畴；如需网络，建议在应用层封装适配器并通过事件/查询桥接。

[本节为通用指导，无需列出章节来源]

## 故障排除指南

### 架构初始化问题
- 症状
  - 初始化失败、阶段转换异常、组件未注册。
- 排查步骤
  - 检查 Init() 是否正确注册系统/模型/工具。
  - 查看阶段转换日志，确认是否违反阶段约束。
  - 确认 Late Registration 配置是否允许在 Ready 后注册。
  - 如发生异常，查看 FailedInitialization 阶段与事件通知。
- 相关实现
  - 阶段转换与通知、组件注册与生命周期、销毁流程。

章节来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L135-L398)

### 事件处理问题
- 症状
  - 事件未触发、重复触发、回调未注销。
- 排查步骤
  - 核对事件类型与泛型约束，确保 Send<T>() 的 T 具备无参构造。
  - 使用 UnRegisterList 统一管理注销，避免遗漏。
  - 在注册与发送处设置断点，确认回调链路。
- 相关实现
  - EventBus 的 Register/Send/UnRegister 与 EasyEvents 的事件缓存。

章节来源
- [GFramework.Core/events/EventBus.cs](file://GFramework.Core/events/EventBus.cs#L1-L55)
- [GFramework.Core/events/EasyEvents.cs](file://GFramework.Core/events/EasyEvents.cs#L1-L85)

### 协程执行问题
- 症状
  - 协程卡住、句柄无效、异常未被捕获。
- 排查步骤
  - 检查等待指令是否完成，确认 WaitForCoroutine 的等待关系。
  - 使用 ActiveCoroutineCount 与 Kill/KillByTag 清理异常协程。
  - 查看控制台错误输出，定位异常协程。
- 相关实现
  - 协程句柄生成、调度器推进、错误处理与唤醒等待者。

章节来源
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L1-L392)
- [GFramework.Core/coroutine/CoroutineHandle.cs](file://GFramework.Core/coroutine/CoroutineHandle.cs#L1-L94)

### 依赖注入问题
- 症状
  - “容器已冻结”、“未注册实例”、“多个实例”。
- 排查步骤
  - 确认在 Freeze 前完成所有注册。
  - 使用 GetRequired 精确获取单例，避免歧义。
  - 使用 GetAllSorted 按策略排序获取实例。
- 相关实现
  - RegisterPlurality、Get/GetRequired/GetAll、Freeze。

章节来源
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L1-L373)

### 命令与查询问题
- 症状
  - 命令执行异常、查询无返回或返回错误。
- 排查步骤
  - 校验命令/查询参数非空，确认 OnExecute/Do 的实现。
  - 在命令/查询前后设置断点，核对输入与输出。
- 相关实现
  - CommandBus/QueryBus 的 Send/SendAsync 与 Do。

章节来源
- [GFramework.Core/command/CommandBus.cs](file://GFramework.Core/command/CommandBus.cs#L1-L62)
- [GFramework.Core/query/QueryBus.cs](file://GFramework.Core/query/QueryBus.cs#L1-L23)

### 可绑定属性问题
- 症状
  - 回调未触发、初始值未回放、值未变化。
- 排查步骤
  - 使用 RegisterWithInitValue 验证初始值。
  - 检查自定义比较器是否导致相等判断异常。
- 相关实现
  - Value 设置逻辑与回调触发。

章节来源
- [GFramework.Core/property/BindableProperty.cs](file://GFramework.Core/property/BindableProperty.cs#L1-L135)

### 日志配置与调试技巧
- 日志级别
  - 使用 ConsoleLoggerFactory 创建日志器，设置最小级别。
  - 在 Debug/Trace 级别输出详细初始化与组件注册信息。
- 断点调试
  - 在 Initialize/Destroy、事件注册/发送、协程 Run/Update、容器注册/获取等关键点设置断点。
- 性能分析
  - 使用系统性能监视器观察 CPU/内存；在高负载路径增加日志采样。
- 内存泄漏检测
  - 使用 UnRegisterList 统一注销事件与属性回调。
  - 定期调用 CoroutineScheduler.Clear/Kill/KillByTag 清理协程。

章节来源
- [GFramework.Core/logging/AbstractLogger.cs](file://GFramework.Core/logging/AbstractLogger.cs#L1-L493)
- [GFramework.Core/logging/ConsoleLogger.cs](file://GFramework.Core/logging/ConsoleLogger.cs#L1-L81)
- [GFramework.Core/logging/ConsoleLoggerFactory.cs](file://GFramework.Core/logging/ConsoleLoggerFactory.cs#L1-L20)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L237-L254)

### 开发环境配置问题
- NuGet 包冲突
  - 确保仅安装官方包：GeWuYou.GFramework.*，避免混用第三方版本。
- 版本兼容性
  - Core 模块要求 .NET 6+；Godot 集成需匹配 Godot 4.5+。
- 构建问题
  - 检查项目 SDK 与 TargetFramework；确保 Source Generators 正确启用。

[本节为通用指导，无需列出章节来源]

### 生产环境排查与应急处理
- 排查流程
  - 快速降级：临时关闭高开销功能（如详细日志、高频事件）。
  - 采集证据：保留日志、快照、堆栈信息。
  - 逐步回滚：按模块回滚最近变更，定位引入问题的提交。
- 应急处理
  - 通过事件总线发送“降级事件”，系统收到后进入降级模式。
  - 使用协程清理队列与缓存，释放资源。

[本节为通用指导，无需列出章节来源]

### 常见错误消息与解决步骤
- “Invalid phase transition”
  - 检查阶段转换是否在允许列表内，必要时放宽 StrictPhaseValidation。
- “Cannot register X after Architecture is Ready”
  - 将注册移动到 Init() 或允许 Late Registration。
- “IocContainer is frozen”
  - 避免在 Ready 后注册；使用 Freeze 前完成所有注册。
- “No instance registered for X”
  - 检查 RegisterPlurality 是否正确调用；确认接口与具体类型均注册。
- “Multiple instances registered for X”
  - 使用 GetRequired 精确获取；或调整注册策略为单例。
- “Coroutine cannot wait for itself.”
  - 检查 WaitForCoroutine 的参数，避免自等待。
- “Error destroying X”
  - 捕获并记录异常，继续销毁其他组件，避免连锁失败。

章节来源
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L164-L183)
- [GFramework.Core/architecture/Architecture.cs](file://GFramework.Core/architecture/Architecture.cs#L407-L414)
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L75-L98)
- [GFramework.Core/ioc/IocContainer.cs](file://GFramework.Core/ioc/IocContainer.cs#L240-L259)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L192-L196)
- [GFramework.Core/coroutine/CoroutineScheduler.cs](file://GFramework.Core/coroutine/CoroutineScheduler.cs#L341-L345)

## 结论
通过掌握架构生命周期、事件总线、协程调度、IoC 容器与日志系统的工作原理，开发者可以高效定位与修复大多数运行时问题。建议在开发阶段即建立完善的日志与断点策略，在生产环境采用渐进式降级与快速回滚机制，确保稳定性与可维护性。

[本节为总结性内容，无需列出章节来源]

## 附录
- 社区支持与问题报告
  - 通过仓库 Issues 提交问题，附带最小可复现工程、日志与环境信息。
  - 参考文档与教程以确保版本与用法一致。
- 快速检查清单
  - 初始化：阶段顺序、Late Registration、冻结时机。
  - 事件：类型一致性、注册/注销成对、全局事件缓存。
  - 协程：等待链路、句柄有效性、异常处理。
  - 容器：注册时机、GetRequired 精准获取、冻结保护。
  - 日志：级别设置、输出目标、异常附加信息。

[本节为通用指导，无需列出章节来源]