首页 > 代码库 > 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调试小方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。