简单调试技术

来源:互联网 发布:linux gcc 4.8.5 编辑:程序博客网 时间:2024/06/09 21:22

很长时间没写东西了,光看不写,玩的多学的少~恶习渐渐形成。大概浏览了一本叫C++调试指南的书,很薄很了几个感觉很实用得调试方法,在此总结下。调试技术分为两块基本,一部分为tracing(跟踪技术),一部分为debugger(调试器技术)。跟踪分为基本跟踪(basic tracing)和扩展跟踪(extended tracing)。基本跟踪就是用简单的cout语句跟踪变量值的变化。扩展跟踪涉及到标记(flag)和函数调用(function call)的使用,有了他们跟踪功能可以方便的打开和关闭,而且需要编写和插入到程序中的代码量会减少。下面就常见的方法分开总结:

1.使用bool变量来打开和关闭跟踪。记得有的建议用宏定义,感觉差不多,生成的可执行文件大小小一点,效率可能高一点。
例如:
bool trace_on = true;
...
if(trace_on)
{
 cout<<end<<"Location 1"<<endl
 <<"Value is: "<<value<<endl;
}
...

2.如果if中的变量值很多,那么可以写成一个函数的形式
if(trace_on)
{
 trace_display();
}
void trace_display(int location, int value1...);//location 可以为行号,用来标注位置

3.使用assert函数
以前经常使用,但是不知道有一个快捷的方法关闭,就是在assert的头文件加上一行代码就可以了,如下
#define NDEBUE
#include <assert.h>
这样以后的assert宏就不被执行,对于经常修改的大型程序,这种方法非常方便。

 

原创粉丝点击