系统化调试方法论与各语言调试命令。
git bisect 检查近期提交来实现。# Node.js 调试器
node --inspect-brk app.js
# Chrome DevTools 访问:chrome://inspect
# 控制台调试
console.log(JSON.stringify(obj, null, 2))
console.trace('此处调用堆栈')
console.time('perf'); /* 代码 */ console.timeEnd('perf')
# 内存泄漏排查
node --expose-gc --max-old-space-size=4096 app.js
# 内置调试器
python -m pdb script.py
# 代码中设置断点
breakpoint() # Python 3.7+
# 详细内存追踪
python -X tracemalloc script.py
# 性能分析
python -m cProfile -s cumulative script.py
# LLDB 调试
lldb ./MyApp
(lldb) breakpoint set --name main
(lldb) run
(lldb) po myVariable
# Xcode: Product → Profile (Instruments)
/* 高亮所有元素轮廓 */
* { outline: 1px solid red !important; }
/* 调试特定元素 */
.debug { background: rgba(255,0,0,0.1) !important; }
# HTTP 调试
curl -v https://api.example.com/endpoint
curl -w "@curl-format.txt" -o /dev/null -s https://example.com
# DNS
dig example.com
nslookup example.com
# 端口
lsof -i :3000
netstat -tlnp
git bisect start
git bisect bad # 标记当前提交为有问题的
git bisect good abc1234 # 标记一个已知正常的提交
# Git 会检出中间提交 — 测试后执行:
git bisect good # 或 git bisect bad
# 重复直到找到引入问题的提交
git bisect reset
| 错误 | 可能原因 | 修复方法 |
|---|---|---|
Cannot read property of undefined |
缺少空值检查或数据结构不符 | 添加可选链 (?.) 或验证数据 |
ENOENT |
文件/目录不存在 | 检查路径、创建目录、使用 existsSync |
CORS error |
后端缺少 CORS 头 | 添加带有正确来源的 CORS 中间件 |
Module not found |
依赖缺失或导入路径错误 | npm install,检查 tsconfig 路径 |
Hydration mismatch (React) |
服务端与客户端渲染的 HTML 不一致 | 确保渲染一致性,使用 useEffect 处理仅客户端逻辑 |
Segmentation fault |
内存损坏、空指针 | 检查数组边界、指针有效性 |
Connection refused |
服务未在预期端口运行 | 检查服务是否启动,验证端口/主机 |
Permission denied |
文件/网络权限问题 | 检查 chmod、防火墙、sudo 权限 |
# 哪个进程占用了此端口?
lsof -i :端口号
# 这个进程在做什么?
ps aux | grep 进程名
# 监控文件变化
fswatch -r ./src
# 磁盘空间
df -h
# 系统资源使用情况
top -l 1 | head -10