李sir_Blog

博客园 首页 联系 订阅 管理
  705 随笔 :: 58 文章 :: 134 评论 :: 193万 阅读

随笔分类 -  调试

1

摘要:软件总存在这样或者那样的bug。虽然测试员已经在很努力的寻找问题,程序员也在汗流浃背的除虫,但是总会有一些情况被遗漏或者不可预测,比如用户的硬件环境、网络状况、操作系统差异等等,不一而足。而导致的结果则是弹出下面这样一个让用户摸不着头脑又恼火的提示,然后崩溃掉,令程序员尴尬不已。而在一些成熟的软件产品中,程序崩溃时我们看到的却是另外一番画面,比如QQ:又比如迅雷:你也想让你的程序拥有友好的崩溃界面,降低用户生气的能量,并且收集一些必要的信息进行调试,来完善你的程序吗?如果你是MFC程序猿,请继续围观,其他猿类请自行无视,并寻找适合你的猿粪。其实MFC框架已经为我们考虑到这个问题,只是默认生成的 阅读全文
posted @ 2011-03-28 17:16 李sir 阅读(3756) 评论(0) 推荐(0) 编辑

摘要:参考:http://blog.csdn.net/ArCoolGG/archive/2007/04/05/1553027.aspx首先,写一个 异常处理函数。std::ostream& operator << ( std::ostream& os, const EXCEPTION_RECORD& red ){ //return os << " Thread ID:" << GetCurrentThreadId()<< " ExceptionCode: " << red.Ex 阅读全文
posted @ 2011-03-28 17:09 李sir 阅读(1734) 评论(0) 推荐(0) 编辑

摘要:在VS2005写完程序后,运行后弹出对话框显示:HEAP CORRUPTION DETECTED:CRT detected that the application wrote to memory after after the end of heap buffer最后定位到代码ans = new int[size_a+size_b]; // 动态分配数组空间delete [] ans;一把delete [] ans;删掉程序就不弹出错误,这是为什么呢??错误原因:因为对内存的操作越界了,超出所分配的内存的边界。解决:增大分配的内存!e.g.ans = new int[size_a+size_ 阅读全文
posted @ 2011-02-24 19:19 李sir 阅读(3928) 评论(0) 推荐(0) 编辑

摘要:静态数据成员:下面看一个例子:#include iostream.hclass Point{public:void output(){}static void init(){}};void main( void ){Point pt;pt.init();pt.output();}这样编译是不会有任何错误的。下面这样看#include iostream.hclass Point{public:void output(){}static void init(){}};void main( void ){Point::output();}这样编译会处错,错误信息:illegal call o 阅读全文
posted @ 2011-01-24 19:45 李sir 阅读(4874) 评论(0) 推荐(1) 编辑

摘要:今天打算给自己的笔记本装个Visual Studio 2005,结果装到一半的时候,安装程序提示此版本与VISTA系统有兼容性的问题,于是退出了安装,程序也友好的提示可能有部分组件已经安装,于是又手动的卸载了已安装的组件,但Microsoft .NET Compact Framework不知道怎么卸载,也就没管他了! 结果在运行别的程序时,突然弹出“Visual Studio Just-In-Time Debugger” 对话框,内容是:‘An unhanled win32 exception occurred in explorer.exe[2548]. just-in-time debue 阅读全文
posted @ 2011-01-04 11:06 李sir 阅读(30019) 评论(2) 推荐(0) 编辑

摘要:一、综述SEH--Structured Exception Handling,是Windows操作系统使用的异常处理方式。对于SEH,有点需要说明的是,SEH是属于操作系统的特性,不为特定语言设计,但是实际上,作为操作系统的特性,几乎就等同与面向C语言设计,这点很好理解,就像Win32 API,Linux下的系统调用,都是操作系统的特性吧,实际还是为C做的。但是,作为为C语言设计的东西,实际上可调... 阅读全文
posted @ 2010-11-24 16:28 李sir 阅读(1707) 评论(0) 推荐(0) 编辑

摘要:原文:http://www.debuginfo.com/articles/easywindbg.html译者:arhat时间:2006年4月13日关键词:CDBWinDbg导言你 钟情什么样的调试器?如果你问我这个问题,我会回答是“VisualStudio+WinDbg”。我比较喜欢VisualStudio那朴实无 华且易操作的接口,更喜欢它能迅速把我需要的信息以可视的形式... 阅读全文
posted @ 2010-11-24 16:20 李sir 阅读(730) 评论(0) 推荐(0) 编辑

摘要:[前言:使用__FILE__和__LINE__来定位错误已经屡见不鲜,然而其中一些道理又有几个人仔细探究过。本文参考了Curtis Krauskopf的一篇名为Using __FILE__ and __LINE__ to Report Errors的文章,希望达到解惑之效。]问题:当运行时错误产生时,我怎样才能得到包含C++文件名和行号的字符串信息?回答:在C++中的__FILE__预编译指示器包... 阅读全文
posted @ 2010-11-24 16:05 李sir 阅读(17042) 评论(4) 推荐(2) 编辑

摘要:将'unsigned long* 改为'unsigned long 阅读全文
posted @ 2010-11-14 12:49 李sir 阅读(704) 评论(0) 推荐(0) 编辑

摘要:Run-Time Check Failure #2 - Stack around the variable 'var' was corrupted摘要:简介VC++.NET编译新功能,运行时错误检查,编译选项 (/RTC1, equiv. to /RTCsu)最近把一个别人早期在VC 6下编写的一个服务移植到VC 7.1 (.NET 2003)时,突然跳出好些运行时错误提示。经过查询编译器和出错说... 阅读全文
posted @ 2010-10-08 09:25 李sir 阅读(3598) 评论(0) 推荐(0) 编辑

摘要:在程序的开始处我申请了一块内存,中间对其进行了一些操作,在程序结束处,释放内存的时候,引起错误:HEAPCORRUPTIONDETECTED:afterNormalblock(#***)at0x****.CRTdetectedthatapplicationwrotememoryafterendofheapbuffer.错误原因:以对内在操作的过程中,所写的地址超出了,所分配内在的边界memcpy的... 阅读全文
posted @ 2010-10-08 09:16 李sir 阅读(809) 评论(0) 推荐(0) 编辑

摘要:今日在释放内存是发生HEAP corruption Detected問題,纠结了半天。知道是释放的内存地址被改掉了造成的问题。内存在申请时会前后各加4位fd。用来校验。如果内存被该改掉的话后面4位fd会变掉。问题出在做base64的时候传入原数据。和原数据长度(不带;).我把他当字符串了len多加了一位。 阅读全文
posted @ 2010-09-27 20:03 李sir 阅读(709) 评论(0) 推荐(0) 编辑

摘要:最近写程序忽然发现了一些错误,运行总是报Heap corruption detected. 断点单步发现总是在delete的时候出错。 以前也出现过,不过没啥注意,现在想留着是个大大的心病!于是上网查了相关资料: 下面是转载资料: http://www.cppblog.com/kerlw/archive/2007/04/10/21604.aspx 今天写程序的时候到一个问题,调试的时候总是报错He... 阅读全文
posted @ 2010-09-27 14:14 李sir 阅读(21209) 评论(3) 推荐(1) 编辑

摘要:1.msdn 在debug模式下的内存结构(曾今在gaia引擎里看过类似的自己模仿实现的内存管理结构)typedef struct _CrtMemBlockHeader{// Pointer to the block allocated just before this one: struct _CrtMemBlockHeader *pBlockHeaderNext; // Pointer to ... 阅读全文
posted @ 2010-09-08 15:53 李sir 阅读(5147) 评论(0) 推荐(3) 编辑

摘要:关键字:vs2008,dll,64bit,32bit原来使用Win7的32位系统,进行C#工程的开发,后来重装系统,换成了win7的64位系统调试原来的工程,由于在其中引用了“SQLite”的32位的dll,导致在64为位下程序无法运行(但是编译可以通过)后来通过修改工程文件(.csproj),在其中设置引用的条件,解决了问题打开引用了SQLite的工程(例如叫做info)... 阅读全文
posted @ 2010-09-06 15:50 李sir 阅读(6181) 评论(0) 推荐(0) 编辑

摘要:warning C4018: “<”: 有符号/无符号不匹配出错代码 for(int j=0;j<detector.size();j++)出错原因分析: detector 是一个Vector容器 ,detecot.size() 在容器说明中 被定义为: unsigned int 类型, 而j是int 类型 所以会出现: 有符号/无符号不匹配 警告 错误改正 :... 阅读全文
posted @ 2010-09-05 18:37 李sir 阅读(22312) 评论(1) 推荐(4) 编辑

摘要:只需要改为_wcsicmp就可以了由提示,我们知道,wcsicmp为MC自己定义的函数,不复合 ISO C++ 组织的命名,该组织的命名为_wcsicmp。 阅读全文
posted @ 2010-09-05 17:25 李sir 阅读(485) 评论(0) 推荐(0) 编辑

摘要:error C2065: 'IDB_DIGITS' : undeclared identifier It is named correctly...以前总是忘了引用resource.h而报着个错。老是忘了记下来提醒下自己 阅读全文
posted @ 2010-09-05 17:19 李sir 阅读(497) 评论(0) 推荐(0) 编辑

摘要:From Baidu:在测试工作中,需要接触到各种类型的测试工具。一般来说,有以下一些类型的工具: 测试管理工具:可以帮助完成测试计划、跟踪测试运行结果等的工具。这类工具还包括有助于需求、设计、编码测试及缺陷跟踪的工具; 静态分析工具:分析代码而不执行代码。这种工具检测某些缺陷比用其它方法更有效,开销也更小。这种工具一般可以度量代码的各种指标,如McCabe测定复杂度,Logiscope度量代码和... 阅读全文
posted @ 2010-09-05 13:48 李sir 阅读(606) 评论(0) 推荐(0) 编辑

摘要:当一个应用程序比较大时,菜单比较多时,特别是初次接触这个程序的源码时,就会很难找到这个程序的入口点。下面通过SPY++可以很快速的获取到这个入口(程序要有源代码)1、运行这个应用程序,例如a.exe,此时打开spy++,将Window找到当前a.exe,再将Messages只捕捉WM_COMMAND消息。2、操作一个a.exe上想找到入口的一个菜单,spy++会捕捉到这个消息;3、可以看到这个消息... 阅读全文
posted @ 2010-09-01 14:39 李sir 阅读(1787) 评论(0) 推荐(0) 编辑

1
点击右上角即可分享
微信分享提示