惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
The GitHub Blog
The GitHub Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
月光博客
月光博客
量子位
博客园 - 司徒正美
V
V2EX
I
InfoQ
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Vercel News
Vercel News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
美团技术团队
N
Netflix TechBlog - Medium
L
LangChain Blog
IT之家
IT之家
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
A
About on SuperTechFans
Microsoft Azure Blog
Microsoft Azure Blog

Jiajun的技术笔记

你好,2026! TiDB 源码阅读(六):TiDB Coprocessor 源码解析 性能优化的核心思想 TiDB 源码阅读(五):索引 TiDB 源码阅读(四):AST、逻辑计划、物理计划 CockroachDB Serverless Architecture podman 无故退出 Cursor Control-L (CTRL-L) Keyboard Shortcuts in Terminal Replace docker with podman Using xmonad with xfce4 A RC script for freebsd frpc 自己动手写一个k8s controller AI 会取代你的(编程)岗位吗? 自建DERP服务器提升Tailscale连接速度(使用Nginx转发) 自动升级Docker容器 再读《程序员修炼之道-从小工到专家》 让浏览器下载文件 再读《软件随想录》/《黑客与画家》/《软技能》 HTTP 压力测试中的 Coordinated Omission 2的补码 编程语言中的 context 是什么? flutter macOS 构建出错 Flatpak 使用小记 Golang CAS 操作是怎么实现的 PostgreSQL 当MQ来使用 Clash 结合 工作VPN 的网络设计 使用 PostgreSQL 搭建 JuiceFS PostgreSQL 配置优化和日志分析 有GitHub Copilot?那就可以搭建你的ChatGPT4服务 窗口函数的使用(以PG为例)
如何调试?
Jiajun Huang · 2018-05-08 · via Jiajun的技术笔记

如何调试?

单步跟踪是最常见的调试方法,不过我用的极少,因为效率低。往往也不需要用到这个。接下来我写的几种常见的调试方式, 主要针对Go和Python。按难度从容易到难,按效率从高到低。

以下所有的调试的前提都是找到复现方式

  • 标准输出+日志

一般日志都可以设置级别,一般都会有例如 debug, info, error, fatal 等级别。将日志输出到标准输出,在找到 复现方式之后就可以看日志,然后定位问题。不过日志调试有一个问题,如果日志打印太多,容易把真正出问题的地方掩盖掉, 如果太少了,又不够详细导致不方便调试。给日志设置不同的级别更多的是一门手艺活,凭个人品味,经验。

print也算一种,不过显然logging是更科学的方式。

  • 打印调用栈

如果光看日志看不出来,可以用各种方式到异常点,看当前栈的情况,包括调用栈,变量等。比如Python中的异常,可以直接 logging.exception 打印,Go的panic也可以 runtime/debug 中的printstack打印出来。这种情况下一般配合异常收集 工具比如 sentry 等,可以方便快速的定位问题

  • review 代码

通常结合上面的两步一起来,我个人一般到第一二步就知道问题所在了。如果还是不行,就会重读一遍代码,在大脑里模拟 处理的走向。

  • 查看APM

如果有使用APM工具,可以到其dashboard看,从大局看问题所在,然后结合上面两种方式逐层细化下去。

  • 单步跟踪

单步跟踪很强大,但是通常用不上。普通的调试走单步,实在是有种大炮打蚊子的感觉。常见的调试工具是pdb(Python),gdb(Go)。