调试实战
고객사에서 받는 코드에는 테스트가 없고 문서는 코드와 다릅니다. 이 코스는 그런 코드를 증상에서 출발해 고치는 세 가지 기술을 다룹니다. HTTP 응답만 보고 계산 로직의 결함을 좁히는 법, 트레이스백을 읽고 실패 지점을 특정한 뒤 다음번을 위한 계측을 심는 법, 그리고 코드가 아니라 환경이 원인일 때 그것을 가려내는 법입니다.
중급 · 레슨 30 · 实验 10
커리큘럼
从症状到原因
- 文档和代码不一致时,信哪个 reading
- 修好接手过来的 API lab
- 测验:从症状到原因 quiz
代码层面的调试
- traceback 要从下往上读 reading
- 从 traceback 一直做到埋点 lab
- 测验:代码层面的调试 quiz
区分环境问题
- 在我们服务器上是好的呀 reading
- 把环境差异收窄 lab
- 测验:区分环境问题 quiz
把「很慢」这条报障收窄
- 把「慢」这个词换成数字 reading
- 把「很慢」这一句话变成四个数字 lab
- 测验:把「很慢」这条报障收窄 quiz
每次减半
- 对半切分:64 个版本只需六次判定 reading
- 从何时开始坏的 — 用六次把 64 个版本缩小 lab
- 测验:用二分法缩小范围 quiz
差异表
- 把能用的和不能用的并排摆出来 reading
- 能用的客户与不能用的客户 — 用差异表排除候选原因 lab
- 测验:成功与失败的差异表 quiz
是外部的问题还是我们的问题
- “对方挂了”的六种意思 reading
- 对方挂了 — 分清六张面孔,定位责任在谁 lab
- 测验:是外部的问题还是我们的问题 quiz
资源耗尽时的症状
- 耗尽的是这里,报错却出在那里 reading
- 一到下午就挂 — 用数据抓住耗尽的资源 lab
- 测验:资源耗尽时的症状 quiz
顺序得不到保证时发生的事
- 数字对不上,原因是顺序 reading
- 来了八次更新,只留下一次 lab
- 测验:顺序得不到保证会发生什么 quiz
重试就能过的问题
- 再试一次就好了 reading
- 重试就能过的问题 — 要跑多少次才能说已修好 lab
- 测验:把间歇性失败当作数据 quiz