摘要:
好不容易复现的宕机bug,结果不产生dump文件,让俺情何以堪啊!坑爹嘛!大部分情况还好,就是弹出这种“Runtime Error”框的时候,不产生dump文件,解决它!!!VS2005中SetUnhandledExceptionFilter函数应用很多软件通过设置自己的异常捕获函数,捕获未处理的异常,生成报告或者日志(例如生成mini-dump文件),达到Release版本下追踪Bug的目的。但是,到了VS2005(即VC8),Microsoft对CRT(C运行时库)的一些与安全相关的代码做了些改动,典型的,例如增加了对缓冲溢出的检查。新CRT版本在出现错误时强制把异常抛给默认的调试器(如果 阅读全文
摘要:
一 使用各种工具,一般都是收费的,但是可以申请试用。二 工具收集1)BoundsChecker :(http://www.compuware.com/)(首选BoundsChecker) 应该说是功能最强,使用只需要open需要测试的exe,然后start就可以了,可以通过检测结果定位到源代码中有内存泄露的代码行。2)Purifyplus (http://www.ibm.com)3)Memory Validator(http://www.softwareverify.com/index.html) 应该说是功能也比较强,使用只需要start application wizard的start e 阅读全文
摘要:
使用MFC提供的功能来检测内存泄露。使用方法:1)工程是MFC工程,或是工程的设置中有Use MFC in a Shared DLL,2)很多地方说是要定义以下宏#ifdef _DEBUG#define new DEBUG_NEW#endif但是我发现只要include <afx.h> 即可。(大家可以检测一下)3)可以在F5运行程序后,在output窗口中看到如下的内存泄露的显示。(只在debug下有用哦)4)如果有泄露,则显示如下:Detected memory leaks!Dumping objects ->{214} normal block at 0x00D9161 阅读全文
摘要:
一 简单的对内存的分配和释放跟踪,并将结果输出到console,它也是一般C++内存泄露的检测原理,来自C++编程思想:(比较简单,大家都可以看的明白的哦)实现如下:MemCheck.h//: C02:MemCheck.h#ifndef MEMCHECK_H#define MEMCHECK_H#include <cstddef> // for size_t// Hijack the new operator (both scalar and array versions)void* operator new(std::size_t, const char*, long);void* 阅读全文
摘要:
一Visual Studio 调试器和 C 运行时 (CRT) 库为我们提供了检测和识别内存泄漏的有效方法。主要使用函数:_CrtDumpMemoryLeaks();二 实例 1 #define _CRTDBG_MAP_ALLOC //输出更详细的report 2 #include <stdlib.h> 3 #include <crtdbg.h> 4 //以上的内容必须放在其他include的前面 5 6 #include <vector> 7 8 class MyClass 9 {10 private:11 int *p;12 public:13 MyCl 阅读全文
摘要:
一 拷贝构造函数是C++最基础的概念之一,大家自认为对拷贝构造函数了解么?请大家先回答一下三个问题:1. 以下函数哪个是拷贝构造函数,为什么?X::X(constX&); X::X(X); X::X(X&,inta=1); X::X(X&,inta=1,b=2);2. 一个类中可以存在多于一个的拷贝构造函数吗?3. 写出以下程序段的输出结果, 并说明为什么?如果你都能回答无误的话,那么你已经对拷贝构造函数有了相当的了解。#include #include structX{ template<typenameT> X(T&){std::cout< 阅读全文
摘要:
Debug Information to release dlls Text: There are 3 settings to add debug information to release dlls under project -> Properties. Make sure you change your Configuration to Release and set the following properties.Under Linker Properties ---> Debug ---> General Debug Info – Yes (/DEBUG) Ge 阅读全文