From d3f9159a7aff3bfd153120e6f6afccb008fb8bcc Mon Sep 17 00:00:00 2001 From: Jerry Zhang Date: Thu, 24 Jan 2013 23:05:41 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AC=AC11=E7=AB=A0=E9=94=99=E5=88=AB=E5=AD=97?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 11.0.md | 4 ++-- 11.2.md | 4 ++-- 11.3.md | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/11.0.md b/11.0.md index b2d10ed9..230a3475 100755 --- a/11.0.md +++ b/11.0.md @@ -1,7 +1,7 @@ # 11 错误处理,调试和测试 -我们经常会看到很多程序员大部分的"编程"时间都花费在检查bug和修复bug上。无论你是在编写修改代码还是重构系统,几乎都是花费大量的时间在进行故障排除和测试,外界都觉得我们程序员是设计师,能够把一个系统从无做到有,是一项很伟大的工作,而且是相当有趣的工作,但事实上我们每天都是徘回在排错、调试、测试之间。当然如果你有良好的习惯和技术方案来直面这些问题,那么你就有可能将排错时间减到最少,而尽可能的将时间花费在更有价值的事情上。 +我们经常会看到很多程序员大部分的"编程"时间都花费在检查bug和修复bug上。无论你是在编写修改代码还是重构系统,几乎都是花费大量的时间在进行故障排除和测试,外界都觉得我们程序员是设计师,能够把一个系统从无做到有,是一项很伟大的工作,而且是相当有趣的工作,但事实上我们每天都是徘徊在排错、调试、测试之间。当然如果你有良好的习惯和技术方案来直面这些问题,那么你就有可能将排错时间减到最少,而尽可能的将时间花费在更有价值的事情上。 -但是遗憾的是很多程序员不愿意在错误处理、调试和测试能力上下工夫,导致后面应用上线之后查找错误、定位问题花费更多的时间。所以我们在设计应用之前就做好错误处理规划、测试用例等,那么将来修改代码、升级系统都讲变得简单。 +但是遗憾的是很多程序员不愿意在错误处理、调试和测试能力上下工夫,导致后面应用上线之后查找错误、定位问题花费更多的时间。所以我们在设计应用之前就做好错误处理规划、测试用例等,那么将来修改代码、升级系统都将变得简单。 开发Web应用过程中,错误自然难免,那么如何更好的找到错误原因,解决问题呢?11.1小节将介绍Go语言中如何处理错误,如何设计自己的包、函数的错误处理,11.2小节将介绍如何使用GDB来调试我们的程序,动态运行情况下各种变量信息,运行情况的监控和调试。 diff --git a/11.2.md b/11.2.md index 3b1f22f4..9707ab82 100755 --- a/11.2.md +++ b/11.2.md @@ -2,7 +2,7 @@ 开发程序过程中调试代码是开发者经常要做的一件事情,Go语言不像PHP、Python等动态语言,只要修改不需要编译就可以直接输出,而且可以动态的在运行环境下打印数据。当然Go语言也可以通过Println之类的打印数据来调试,但是每次都需要重新编译,这是一件相当麻烦的事情。我们知道在Python中有pdb/ipdb之类的工具调试,Javascript也有类似工具,这些工具都能够动态的显示变量信息,单步调试等。不过庆幸的是Go也有类似的工具支持:GDB。Go内部已经内置支持了GDB,所以,我们可以通过GDB来进行调试,那么本小节就来介绍一下如何通过GDB来调试Go程序。 ## GDB调试简介 -GDB是GNU开源组织发布的一个强大的类UNIX系统下的程序调试工具。使用GDB可以做如下事情: +GDB是FSF(自由软件基金会)发布的一个强大的类UNIX系统下的程序调试工具。使用GDB可以做如下事情: 1. 启动程序,可以按照开发者的自定义要求运行程序。 2. 可让被调试的程序在开发者设定的调置的断点处停住。(断点可以是条件表达式) @@ -14,7 +14,7 @@ GDB是GNU开源组织发布的一个强大的类UNIX系统下的程序调试工 编译Go程序的时候需要注意以下几点 1. 传递参数-ldflags "-s",忽略debug的打印信息 -2. 传递-gcflags "-N -l" 参数,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化,这样对于GDB调试来说非常困难,所以在编译的时候加入者两个参数避免这些优化。 +2. 传递-gcflags "-N -l" 参数,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化,这样对于GDB调试来说非常困难,所以在编译的时候加入这两个参数避免这些优化。 ## 常用命令 GDB的一些常用命令如下所示 diff --git a/11.3.md b/11.3.md index d6d49a9c..76de126e 100755 --- a/11.3.md +++ b/11.3.md @@ -6,7 +6,7 @@ Go语言中自带有一个轻量级的测试框架`testing`和自带的`go test` ## 如何编写测试用例 由于`go test`命令只能在一个相应的目录下执行所有文件,所以我们接下来新建一个项目目录`gotest`,这样我们所有的代码和测试代码都在这个目录下。 -接下来我们再改目录下面创建两个文件:gotest.go和gotest_test.go +接下来我们在该目录下面创建两个文件:gotest.go和gotest_test.go 1. gotest.go:这个文件里面我们是创建了一个包,里面有一个函数实现了除法运算: