user-0 提问: 向各位大神，请教log和测试的技巧，来点干活

回复:
user: user-1
content: 个人瞎猜： 桌面开发调试时离不开的技术： 虚拟机（模拟不同操作系统） depends.exe（查看exe依赖的dll） 操作日志 升级日志 任务管理器（检查是否资源泄漏的办法之一： 在任务管理器 进程 查看 选择列 里面选择：内存使用、虚拟内存大小、句柄数、线程数、USER对象、GDI对象 让你的程序(进程)不退出,循环执行主流程很多遍，越多越好，比如1000000次甚至无限循环，记录以上各数值，再隔至少一小时，越长越好，比如一个月，再记录以上各数值。如果以上两组数值的差较大或随时间流逝不断增加，则铁定有对应资源的资源泄漏！ ） GDI泄露检测工具 ……

user: user-0
content: 引用 8 楼 u012879787 的回复:[quote=引用 6 楼 zhao4zhong1 的回复:] 尺有所短，寸有所长。 引用 7 楼 Rewen 的回复:有很多程序打log的啊，也有很多程序不打log的。 看具体程序吧，很多365*24小时的后台程序就用log. 反之，有界面的工具多不用log，直接画面显示就可以了。   赵老师是比较推崇检测函数返回值的人， 我见过好多ui程序都不检测返回值，  似乎久而久之，导致客户端程序里没有检测返回值的习惯、和log习惯，  然后产品发不出去，  隔三差五有bug， 不是奔溃，就是这里那里有问题，  加上项目庞大，分很多个软件。  即使不是24小时要运行的，  一旦出错，你都不知道去哪个软件里找问题。   有的项目，软件就8，9个。      对于这类复杂的程序， 光部署都得学习很久， 可见其复杂性。  所谓的画图，毫无意义，根本无助于事。  [/quote]  另外也许ide的强大，导致  引用 8 楼 u012879787 的回复:[quote=引用 6 楼 zhao4zhong1 的回复:] 尺有所短，寸有所长。 引用 7 楼 Rewen 的回复:有很多程序打log的啊，也有很多程序不打log的。 看具体程序吧，很多365*24小时的后台程序就用log. 反之，有界面的工具多不用log，直接画面显示就可以了。   赵老师是比较推崇检测函数返回值的人， 我见过好多ui程序都不检测返回值，  似乎久而久之，导致客户端程序里没有检测返回值的习惯、和log习惯，  然后产品发不出去，  隔三差五有bug， 不是奔溃，就是这里那里有问题，  加上项目庞大，分很多个软件。  即使不是24小时要运行的，  一旦出错，你都不知道去哪个软件里找问题。   有的项目，软件就8，9个。      对于这类复杂的程序， 光部署都得学习很久， 可见其复杂性。  所谓的画图，毫无意义，根本无助于事。  [/quote]  引用 8 楼 u012879787 的回复:[quote=引用 6 楼 zhao4zhong1 的回复:] 尺有所短，寸有所长。 引用 7 楼 Rewen 的回复:有很多程序打log的啊，也有很多程序不打log的。 看具体程序吧，很多365*24小时的后台程序就用log. 反之，有界面的工具多不用log，直接画面显示就可以了。   赵老师是比较推崇检测函数返回值的人， 我见过好多ui程序都不检测返回值，  似乎久而久之，导致客户端程序里没有检测返回值的习惯、和log习惯，  然后产品发不出去，  隔三差五有bug， 不是奔溃，就是这里那里有问题，  加上项目庞大，分很多个软件。  即使不是24小时要运行的，  一旦出错，你都不知道去哪个软件里找问题。   有的项目，软件就8，9个。      对于这类复杂的程序， 光部署都得学习很久， 可见其复杂性。  所谓的画图，毫无意义，根本无助于事。  [/quote]  也许ide的强大导致，桌面开发人员，基本上不会又打log的习惯，甚至不知道要打log，  这种产品谁接手，谁倒霉。

user: user-0
content: 引用 6 楼 zhao4zhong1 的回复:尺有所短，寸有所长。 引用 7 楼 Rewen 的回复:有很多程序打log的啊，也有很多程序不打log的。 看具体程序吧，很多365*24小时的后台程序就用log. 反之，有界面的工具多不用log，直接画面显示就可以了。   赵老师是比较推崇检测函数返回值的人， 我见过好多ui程序都不检测返回值，  似乎久而久之，导致客户端程序里没有检测返回值的习惯、和log习惯，  然后产品发不出去，  隔三差五有bug， 不是奔溃，就是这里那里有问题，  加上项目庞大，分很多个软件。  即使不是24小时要运行的，  一旦出错，你都不知道去哪个软件里找问题。   有的项目，软件就8，9个。      对于这类复杂的程序， 光部署都得学习很久， 可见其复杂性。  所谓的画图，毫无意义，根本无助于事。

user: user-1
content: 1.  一般的程序不打log和开源软件不打log的区别是什么？  一般的程序比较短小且运行几次就没用了。开源软件只要不是365天x24小时/天保持运行，一般也没必要。 是因为开源作者的能力暴强，解决bug速度快，所以不打log吗？ 是因为开源作者通常都不维护365天x24小时/天保持运行的代码。   2.  我见过一个程序打log， log里居然没有行号，我不明白为什么这么打，打了有什么意义？  难道指望别人去代码里搜索字符串？ 打了行号就不用去代码里搜索字符串了？ 3.  如何做单元测试，我不需要工具名字，我举个场景，这种方式如何测试？  参考OpenCV3.1里面自带的google test？ 网络接口如何测试？ 客户端发送了数据给服务器，服务器recv后， 请问这种代码如何测试？  通过127.0.0.1？ 我看到的一些单元测试的demo，比如测试求和函数，传参数1,2进去，那么预估结果为3，  通过这种方式来判断函数的正确否，  我举的场景，如何测试 ?  参考OpenCV3.1里面自带的google test

user: user-2
content: 有很多程序打log的啊，也有很多程序不打log的。 看具体程序吧，很多365*24小时的后台程序就用log. 反之，有界面的工具多不用log，直接画面显示就可以了。

user: user-0
content: 引用 1 楼 qq423399099 的回复:大公司一般都有自己的日志库，相比于开源库，会在性能上进行一定优化，同时统一各个产品线的日志格式，方便日志的分析处理。  问的是： 开源软件为什么不打日志？   不是问你开源日志库，

user: user-3
content: 大公司一般都有自己的日志库，相比于开源库，会在性能上进行一定优化，同时统一各个产品线的日志格式，方便日志的分析处理。

user: user-1
content: 尺有所短，寸有所长。

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:1.  一般的程序不打log和开源软件不打log的区别是什么？  一般的程序比较短小且运行几次就没用了。开源软件只要不是365天x24小时/天保持运行，一般也没必要。 是因为开源作者的能力暴强，解决bug速度快，所以不打log吗？ 是因为开源作者通常都不维护365天x24小时/天保持运行的代码。   2.  我见过一个程序打log， log里居然没有行号，我不明白为什么这么打，打了有什么意义？  难道指望别人去代码里搜索字符串？ 打了行号就不用去代码里搜索字符串了？ 3.  如何做单元测试，我不需要工具名字，我举个场景，这种方式如何测试？  参考OpenCV3.1里面自带的google test？ 网络接口如何测试？ 客户端发送了数据给服务器，服务器recv后， 请问这种代码如何测试？  通过127.0.0.1？ 我看到的一些单元测试的demo，比如测试求和函数，传参数1,2进去，那么预估结果为3，  通过这种方式来判断函数的正确否，  我举的场景，如何测试 ?  参考OpenCV3.1里面自带的google test  起码搜索的更快，一眼就还知道去哪个文件，哪个函数查看，

user: user-0
content: 引用 3 楼 zhao4zhong1 的回复:1.  一般的程序不打log和开源软件不打log的区别是什么？  一般的程序比较短小且运行几次就没用了。开源软件只要不是365天x24小时/天保持运行，一般也没必要。 是因为开源作者的能力暴强，解决bug速度快，所以不打log吗？ 是因为开源作者通常都不维护365天x24小时/天保持运行的代码。   2.  我见过一个程序打log， log里居然没有行号，我不明白为什么这么打，打了有什么意义？  难道指望别人去代码里搜索字符串？ 打了行号就不用去代码里搜索字符串了？ 3.  如何做单元测试，我不需要工具名字，我举个场景，这种方式如何测试？  参考OpenCV3.1里面自带的google test？ 网络接口如何测试？ 客户端发送了数据给服务器，服务器recv后， 请问这种代码如何测试？  通过127.0.0.1？ 我看到的一些单元测试的demo，比如测试求和函数，传参数1,2进去，那么预估结果为3，  通过这种方式来判断函数的正确否，  我举的场景，如何测试 ?  参考OpenCV3.1里面自带的google test  另外，一般的日志库打印出来的源文件路径貌似是相对的， 我这几天发现某个库打印出绝对路径来，  好奇怪啊。