码迷,mamicode.com
首页 > 其他好文 > 详细

VC调试小方法

时间:2014-10-18 00:38:18      阅读:253      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   os   ar   使用   for   sp   文件   

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调试小方法

标签:style   blog   color   os   ar   使用   for   sp   文件   

原文地址:http://www.cnblogs.com/leadtheway/p/4032260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!