当我们进行软件开发时,如果代码比较少,我们可以很容易的掌握.了解程序的执行情况,但是当代码超过数千行,特别是达到上万行的时候,我们就很难准确掌握程序的流程,在这种情况下,进行代码跟踪是很重要的一件事情.
最极端的情况就是通过#ifdef开关,彻底消除性能开销,但是要像打开/关闭跟踪,必须重新编译,显然程序的最终用户无法这么做.所以只有通过动态的与程序通信来进行跟踪控制. 【程序编程相关:Eric Raymond对于几大开发语言】 代码跟踪技术,对于大多数程序员来讲,就是定义一个比较简单的trace类,将程序的信息进行输出,一般是在程序的入口写一条信息,在程序的出口写一条信息,虽然这是以时间性能为代价,但是它有助于我们在不使用调试器的情况下找到问题所在. 【推荐阅读:VC中基于CEditView的打印和打印】 class timer 【扩展信息:CUJ:高效使用标准库:STL中的una】 首先,为了能够获得程序执行时间,我们先自己定义一个简单的测试性能的类,名字就叫做timer,实现如下: { public: timer():start(clock()) {} ~timer() { cout<<"the time is :"<<clock()-start<<endl; } private: clock_t start; }; 接下来,我们就要定义一个简单的跟踪类trace,初步实现如下: class trace { public: trace(const string& name); ~trace(); static bool trace_active; private: string thename; };bool trace::trace_active=false;
... 下一页