首页 > 代码库 > VC调试小方法

VC调试小方法

1、  设置断点逐步调试。通过Watch、Call Stack窗口查看调试信息。

2、  添加调试代码。

#ifdef  _DEBUG    //Code for debugging Purposes#endif //_DEBUG

 

3、  使用宏。

ASSERT宏  

VERIFY 宏  

TRACE宏  

 

4、  检查内存泄露。

非MFC应用程序下使用CRT查看内存泄露信息。

#ifdef         _DEBUG #define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>         #define new   new(_NORMAL_BLOCK, __FILE__, __LINE__) //可以看到new分配内存情况 #endif  _CrtSetDbgFlag(_CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF); // 可以指定输出文件                   或者_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF ); //输出信息到VS output窗口

 

_CrtSetDbgFlag( _CRTDBG_REPORT_FLAG);

将结果输出指向dump文件

由于默认情况下,内存泄漏的dump内容是输出到vs的debug输出窗口,但是对于服务类程序肯定没法开着vs的debug模式来追踪内存泄漏,所以可以将dump内容的输出转到dump文件中。

在程序中添加如下部分:

HANDLE hLogFile;//声明日志文件句柄              hLogFile = CreateFile("./log/memleak.log", GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ,              NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);//创建日志文件              _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);//将warn级别的内容都输出到文件(注意dump的              报告级别即为warning)              _CrtSetReportFile(_CRT_WARN, hLogFile);//将日志文件设置为告警的输出文件

保存内存Dump

VC调试小方法