程序员工作的本质是用思想去解决问题,通过用各种语言(c c++,go)去完成自己的想法。那么当我们代码完成之后只是完成工作的一小部分,你不能确定问题解决好了,工作完成了。你接下来需要考虑的就是如何去测试你的程序,你的程序中会不会有一些问题。我们的程序,或者功能模块肯定是用输入,输出的接口的。不管你有条件测试,还是需要伪造数据,测试自己的程序是比不可少的。如果测试你的程序,我一般会从一下四点考虑。
![](https://img.haomeiwen.com/i13375092/75468c9041063c00.png)
一,程序运行时间检测
(1),在程序开始,程序结束加上时间戳。看一下程序整体的运行时间。程序需要伪造大量数据,才能看出问题。
(2),如果程序运行的时间有些长,可以通过time命令看一下内核态调用是否特别的占用时间。然后介绍代码中的系统调用,这个影响性能的几个方面唯一一个你好处理的。其他就是内存换入换出,进程上下文切换。这些不好控制。
(3),进一步用类似gprof性能工具查看一下具体是哪个函数的调用时间比较长。
二,进程运行中内存情况
(1)用linux下的top命令长时间观察一段时间程序内存变化情况,看一下内存是否一直在增长,是否存在内存泄露的情况。
(2)如果确实增长中,使用内存泄露检测工具。例如mtrace.检测一下究竟是那块内存存在泄露情况。
三,其他资源泄露
网上找一下对应的检测工具查看一下,是网络句柄有问题,还是文件句柄使用过多,然后还没有释放。
四,外部可控制日志(需具备以下几点)
(1)日志外部可控制,开启,关闭在程序运行状态中。因为很多时候程序运行正常,功能异常了。
(2)日志要有流程输出(就是把程序划分不同的流程步骤)
(3)异常输出。
网友评论