# ===== CodeLab: 程序调试技巧大全 =====
# 来源: https://aoerliang.dpdns.org/articles/tool-debug
# 以下代码片段按文章出现顺序拼接, 共 4 段

# ----- 片段 1 (bash) -----
# Python 示例:分段打印定位崩溃点
import logging
logging.basicConfig(level=logging.DEBUG)

def process(items):
    logging.debug(f"进入 process,共 {len(items)} 项")
    result = []
    for i, item in enumerate(items):
        result.append(item["value"])  # 若这里崩了,说明 item 结构不对
    return result

# ----- 片段 2 (bash) -----
import pdb; pdb.set_trace()   # 在代码里插入断点

# n -> 下一行  s -> 步入函数  c -> 继续
# p 变量名 -> 打印变量值      q -> 退出

# ----- 片段 3 (bash) -----
# Git 自带二分:自动定位"哪个提交引入了 Bug"
git bisect start
git bisect bad            # 当前版本是坏的
git bisect good v1.0      # 已知某个旧版本是好的
# Git 自动检出中间提交,只需不断标记 good / bad

# ----- 片段 4 (bash) -----
curl -v https://api.example.com  # 详细输出,看卡在哪一步
ping -c 4 api.example.com        # 先确认 DNS 与连通性
ss -tlnp | grep 8080             # 端口是否在监听
