Skip to content

Commit

Permalink
docs: 更新 Bug 排查.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Windsland52 committed Dec 19, 2024
1 parent 03f5022 commit 4d9632f
Showing 1 changed file with 45 additions and 32 deletions.
77 changes: 45 additions & 32 deletions docs/zh_cn/develop/Bug 排查.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,53 @@
# Bug 排查

修 bug 也是开发中重要的一环,如何快速准确地定位、分析、解决 bug 是有技巧的。本文将介绍一些常见的 bug 排查方法。
修 bug 也是开发中重要的一环。
如何快速准确地定位、分析、解决 bug 是有技巧的。
本文将简单介绍排查 bug 的一般流程。

> [!NOTE]
>
> 以下内容仅供参考,注意时效性。
## 前置准备

与 bug 发现者沟通,尽可能的获取 bug 相关的信息,如:
与 bug 提出者沟通,尽可能的获取 bug 相关的信息,如:

- 资源版本
- 系统版本
- 问题的细节(发生的时间、场景等)
- 配置文件、日志、截图等
- 问题的细节描述(发生的时间、场景等)
- 配置文件、日志、截图等必要信息

## 定位问题
## 定位关键 log

### 确认资源版本以及运行方式
1. 确认资源版本以及运行方式

对于 M9A 来说,有两种运行方式:1. MaaPiCli 2. MFAWPF
对于 M9A 来说,有两种运行方式:1. MaaPiCli 2. MFAWPF

根据观察,MaaPiCli运行时有行log为
根据观察,MaaPiCli运行时有行log为

```plaintext
[2024-11-28 19:46:32.571][INF][Px14600][Tx16498][Parser.cpp][L56][MaaNS::ProjectInterfaceNS::Parser::parse_interface] Interface Version: [data.version=v2.4.11]
```
```plaintext
[2024-11-28 19:46:32.571][INF][Px14600][Tx16498][Parser.cpp][L56][MaaNS::ProjectInterfaceNS::Parser::parse_interface] Interface Version: [data.version=v2.4.11]
```

既能看出资源版本,又能看出是以 MaaPiCli 方式运行。
而 MFAWPF 运行时有log为

```plaintext
[2024-11-30 01:46:56.490][INF][Px20060][Tx33876][Parser.cpp][L56][MaaNS::ProjectInterfaceNS::Parser::parse_interface] Interface Version: [data.version=]
```
```plaintext
MFAWPF Version: [mfa.version=v1.2.2.0] Interface Version: [data.version=v2.5.5]
```

`version` 为空时,MaaPiCli log 为以上样式。
由 data.version 可以确定资源版本。以此判断当前问题发生的版本是否已修复当前 bug。
同时确认运行方式。因为不同运行方式,可能影响问题的复刻。

确认资源版本可以了解是否为已修复bug版本,确认运行方式则是因为不同运行方式,config文件不同,同时可能生成的bug也不同。
2. 定位问题所在的 log 位置

### 确定问题 log 范围
分两种情况:
- 任务提前结束
- 任务陷入无限循环

- 根据问题描述发生的时间缩小范围
- 根据问题发生的任务缩小范围
- 根据[ERR]确定错误相关原因
- 根据bug相关的[ERR]处反向查找 `Task Hit` ,以确定出错任务
前者全局搜素 **[ERR]** ,查看报错是与什么有关。
后者全局搜索 **Task Hit** ,查找不正常的匹配情况(如持续匹配一个本不该一直匹配的 node)。

## 分析问题

在这里我将问题大致分为三类:资源加载问题、连接问题以及 pipeline 问题(timeout)
在这里我将问题大致分为三类:资源加载问题、连接问题以及 pipeline 问题。

### 资源加载问题

Expand All @@ -64,19 +65,31 @@
[2024-11-24 23:44:05.539][ERR][Px26056][Tx55883][ControlUnitMgr.cpp][L55][MaaNS::CtrlUnitNs::ControlUnitMgr::connect] failed to connect [adb_path_=D:/MuMu Player 12/shell/adb.exe] [adb_serial_=127.0.0.1:16384]
```

### pipeline 问题
### Pipeline 问题

这类是 M9A 主要需要关注的问题,需要了解原 pipeline 流程以及 log 展示的执行情况,加以分析。

1. 非 pipeline 流程类问题

这种问题本身 pipeline 流程逻辑上没有问题。

根据出问题的 node 分为两种:

第一种是 非 无条件匹配/inverse node。
常见原因是截图截太快了,匹配到 `next` 中 node,但当前画面尚未未稳定。
解决方案是为当前 node 添加合适的 `post_wait_freezes`,等待画面稳定再做判断。

一般来说,是pipeline逻辑有漏洞导致的,需要进一步分析。
第二种是 无条件匹配/inverse node。
这种可能是进到非预期界面,导致判断失误。
解决方案是按需修改。

常用的解决方法有:
2. pipeline 流程类问题

- 增加 `flag` 任务
- 增加 `pre/post_wait_freezes` (注意默认 `target` 是否是你想要的)
- 更改实现逻辑(如更换识别方式以及动作逻辑)
这种是任务流程本身完备性不足,需在分析后修改。

## 解决问题

前两种参考[常见问题](../manual/常见问题.md)解决,pipeline 问题需要进一步分析
前两种参考[常见问题](../manual/常见问题.md)解决,pipeline 问题根据分析结果修改

## 验证修复

Expand Down

0 comments on commit 4d9632f

Please sign in to comment.