File tree Expand file tree Collapse file tree 3 files changed +5
-5
lines changed Expand file tree Collapse file tree 3 files changed +5
-5
lines changed Original file line number Diff line number Diff line change 1
1
# 11 错误处理,调试和测试
2
- 我们经常会看到很多程序员大部分的"编程"时间都花费在检查bug和修复bug上。无论你是在编写修改代码还是重构系统,几乎都是花费大量的时间在进行故障排除和测试,外界都觉得我们程序员是设计师,能够把一个系统从无做到有,是一项很伟大的工作,而且是相当有趣的工作,但事实上我们每天都是徘回在排错 、调试、测试之间。当然如果你有良好的习惯和技术方案来直面这些问题,那么你就有可能将排错时间减到最少,而尽可能的将时间花费在更有价值的事情上。
2
+ 我们经常会看到很多程序员大部分的"编程"时间都花费在检查bug和修复bug上。无论你是在编写修改代码还是重构系统,几乎都是花费大量的时间在进行故障排除和测试,外界都觉得我们程序员是设计师,能够把一个系统从无做到有,是一项很伟大的工作,而且是相当有趣的工作,但事实上我们每天都是徘徊在排错 、调试、测试之间。当然如果你有良好的习惯和技术方案来直面这些问题,那么你就有可能将排错时间减到最少,而尽可能的将时间花费在更有价值的事情上。
3
3
4
- 但是遗憾的是很多程序员不愿意在错误处理、调试和测试能力上下工夫,导致后面应用上线之后查找错误、定位问题花费更多的时间。所以我们在设计应用之前就做好错误处理规划、测试用例等,那么将来修改代码、升级系统都讲变得简单 。
4
+ 但是遗憾的是很多程序员不愿意在错误处理、调试和测试能力上下工夫,导致后面应用上线之后查找错误、定位问题花费更多的时间。所以我们在设计应用之前就做好错误处理规划、测试用例等,那么将来修改代码、升级系统都将变得简单 。
5
5
6
6
开发Web应用过程中,错误自然难免,那么如何更好的找到错误原因,解决问题呢?11.1小节将介绍Go语言中如何处理错误,如何设计自己的包、函数的错误处理,11.2小节将介绍如何使用GDB来调试我们的程序,动态运行情况下各种变量信息,运行情况的监控和调试。
7
7
Original file line number Diff line number Diff line change 2
2
开发程序过程中调试代码是开发者经常要做的一件事情,Go语言不像PHP、Python等动态语言,只要修改不需要编译就可以直接输出,而且可以动态的在运行环境下打印数据。当然Go语言也可以通过Println之类的打印数据来调试,但是每次都需要重新编译,这是一件相当麻烦的事情。我们知道在Python中有pdb/ipdb之类的工具调试,Javascript也有类似工具,这些工具都能够动态的显示变量信息,单步调试等。不过庆幸的是Go也有类似的工具支持:GDB。Go内部已经内置支持了GDB,所以,我们可以通过GDB来进行调试,那么本小节就来介绍一下如何通过GDB来调试Go程序。
3
3
4
4
## GDB调试简介
5
- GDB是GNU开源组织发布的一个强大的类UNIX系统下的程序调试工具 。使用GDB可以做如下事情:
5
+ GDB是FSF(自由软件基金会)发布的一个强大的类UNIX系统下的程序调试工具 。使用GDB可以做如下事情:
6
6
7
7
1 . 启动程序,可以按照开发者的自定义要求运行程序。
8
8
2 . 可让被调试的程序在开发者设定的调置的断点处停住。(断点可以是条件表达式)
@@ -14,7 +14,7 @@ GDB是GNU开源组织发布的一个强大的类UNIX系统下的程序调试工
14
14
编译Go程序的时候需要注意以下几点
15
15
16
16
1 . 传递参数-ldflags "-s",忽略debug的打印信息
17
- 2 . 传递-gcflags "-N -l" 参数,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化,这样对于GDB调试来说非常困难,所以在编译的时候加入者两个参数避免这些优化 。
17
+ 2 . 传递-gcflags "-N -l" 参数,这样可以忽略Go内部做的一些优化,聚合变量和函数等优化,这样对于GDB调试来说非常困难,所以在编译的时候加入这两个参数避免这些优化 。
18
18
19
19
## 常用命令
20
20
GDB的一些常用命令如下所示
Original file line number Diff line number Diff line change @@ -6,7 +6,7 @@ Go语言中自带有一个轻量级的测试框架`testing`和自带的`go test`
6
6
## 如何编写测试用例
7
7
由于` go test ` 命令只能在一个相应的目录下执行所有文件,所以我们接下来新建一个项目目录` gotest ` ,这样我们所有的代码和测试代码都在这个目录下。
8
8
9
- 接下来我们再改目录下面创建两个文件 :gotest.go和gotest_test.go
9
+ 接下来我们在该目录下面创建两个文件 :gotest.go和gotest_test.go
10
10
11
11
1 . gotest.go:这个文件里面我们是创建了一个包,里面有一个函数实现了除法运算:
12
12
You can’t perform that action at this time.
0 commit comments