关于Go程序如何调试的讨论

lovegolang · · 4905 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

对于Java或微软系的程序员,可能都会觉得IDE调试工具很爽。Java的IDE和微软的Visual Studio 确实很强大(当然,貌似 Mac 下的 Xcode 调试也很牛),很多程序员应该很依赖这些IDE。 不过,对于 PHP/Python 这样的脚本语言,大部分这类程序员应该都不用调试工具的,一般都是打 log,而且习惯了之后,你会发现效率也挺快。 对于 Go,属于编译型语言,不是脚本语言,而且强大的 GDB 支持调试 Go 程序。似乎 Go 程序的调试工具不是问题。然而,Go程序大部分时候并不适合使用 GDB 调试,主要原因当然是 Go 天生的并发性,并发情况下,断点调试和实际运行会有差别,可能不是bug的,调试会成为bug;是bug的,调试不出来;另一方面,GDB这种命令行式的调试工具,可能大部分人使用不习惯。 因此,Go 程序的调试更多时候是跟 PHP 这样的语言一样,采用记日志的方式,可以记录 Debug 日志。 当然,GDB 也不是没有用处,个人觉得,深入学习 Go 的时候,可以借助 GDB,看看 Go 内部是怎么实现的;另一方面,Go 开发者们会使用 GDB 调试编译器 bug 和 runtime bug。 golang-china googlegruop 关于 Go 程序的调试讨论: sha da 问:那广大的go从业者如何调试程序呢? 来自 minux:printf debugging. gdb一般只在调试编译器bug和runtime bug的时候用。 来自 Monnand:单元测试+打印log。相信我,一个有着很高单元测试覆盖率的库是非常容易维护和管理的。调试器什么的真的不好用——尤其是在支持多个并发单元的语言上。 来自 李四保:一直用日志,最近开始用go test,偶尔会使用go的一些测试工具。查看系统协程运行情况。一直没学会怎么用gdb,也很奇怪不用debug大部分问题居然都可以快速解决,复杂度高的c++可是一个问题有可能要查好几天。这或许就是go强大的地方吧。

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4905 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传