bugs
Crazy_Tortoise
A Crazy Tortoise
展开
-
如何通过崩溃地址找到出错的代码行
这是从“VC编程经验总结7”中转出来的借花献佛——如何通过崩溃地址找到出错的代码行作为程序员,我们平时最担心见到的事情是什么?是内存泄漏?是界面不好看?……错啦!我相信我的看法是不会有人反对的--那就是,程序发生了崩溃!“该程序执行了非法操作,即将关闭。请与你的软件供应商联系。”,呵呵,这句 M$ 的“名言”,恐怕就是程序员最担心见到的东西了。有的时候,自己的程序在自己的机转载 2013-07-16 15:27:22 · 1118 阅读 · 0 评论 -
installshield guid问题 “错误:-1605 此操作只对当前安装产品有效”
问题:在测试卸载时,手动的删除了安装目录下的所有文件。然后重新安装时就提示错误了“错误:-1605 此操作只对当前安装产品有效”。解决:InstallShield Installation Information 文件夹里放的是用 InstallShield 打包的安装程序留下的安装及卸载信息。如果有些程序无法正常卸载,可以把InstallShield Instal转载 2013-11-14 23:38:13 · 6712 阅读 · 4 评论 -
.c 文件和 .h 文件的区别 以及 链接出错的问题(三)
原文地址:http://www.cnblogs.com/shiney/archive/2011/10/20/2219084.html造成LNK2005错误主要有以下几种情况: 1.重复定义全局变量。可能存在两种情况: A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可以使用定义申明一下。其实这是错误的,全局变量是针对整个工程的。正确的应该是在一个CPP文件中定转载 2013-12-02 00:26:18 · 980 阅读 · 0 评论 -
.c 文件和 .h 文件的区别 以及 链接出错的问题(四)
预编译#ifdefx, #define x, #endif 和 #pragma once 对防止多次编译和重定义以及链接错误的关系预编译 和 #pragma once 只是防止某个头文件出现多次编译,这种防止只是在生成单个目标文件的时候才会起作用。具体的场景比如: 在a.h文件中声明了一些结构体或者类(注意是声明,如果是定义,直接出现重定义错;而且不是函数),在b.h文原创 2013-12-02 01:39:25 · 862 阅读 · 0 评论 -
.c 文件和 .h 文件的区别 以及 链接出错的问题(一)
关于两者以前的关系,要从N年以前说起了~ long long ago,once aupon a time .......那是一个被遗忘的年代,在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代。那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更转载 2013-12-01 23:48:47 · 1903 阅读 · 1 评论 -
.c 文件和 .h 文件的区别 以及 链接出错的问题(二)
1.头文件可以预先告诉编译器一些必要的声明,让编译器顺利进行下去,在连接实现以前.未必出现实际的定义. 头文件的意义在 a.使得程序简明,清晰. b.避免了重复编写相同的声明代码. 2.**.c和**.h文件没有必然的联系., 在XX.h文件中声明变量,如int a;,即时在XX.c中include"XX.h", 直接赋值 a = 2;仍然会出错,需要使用 int a = 2原创 2013-12-02 01:20:22 · 970 阅读 · 0 评论 -
C++ bad ptr 情形1例
c++ 中对一块内存初始化可以使用 memset 函数,需要注意memset函数的参数void *memset(void *s,int c,size_t n) 总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。对于数组进行初始化, 参数3内存大小设置为sizeof(array) 就可以;而对于指针进行初始化,则需要 为sizeof(type) * n 求出确切的内存大小。转载 2014-01-10 13:13:53 · 1570 阅读 · 0 评论 -
DebugView使用详解
DebugView是一个系统调试信息输出的捕获工具。在程序中使用如下函数: 1> OutputDebugString 或者在MFC中使用TRACE 2> 内核模式中使用Out_Debug_String,DbgPrint ,_Debug_Printf_Service 编译程序为DEBUG版本,然后运行程序(不是在vs 中运行,是单独运行),打开debug转载 2014-01-12 09:48:58 · 12648 阅读 · 0 评论 -
BoundsChecker安装下载及使用教程攻略
BoundsChecker安装下载地址:参见文章结尾附件1 前言我 在本文中详细介绍了测试工具NuMega Devpartner(以下简称NuMega)的使用方法。NuMega是一个动态测试工具,主要应用于白盒测试。该工具的特点是学习简单、使用方便、功 能有效。NuMega共有三个独立的子功能——BoundsChecker、TrueCoverage、TrueTime。BoundsCheck转载 2014-01-16 19:52:50 · 1731 阅读 · 0 评论 -
内存泄露检测工具【VLD v2.2.3】
下载地址:http://vld.codeplex.com/releases/view/82311注意:这些设置是针对一个工程的,所以要先打开一个progject才可以设置。完装完成后会提示打开文档,然后会打开一个在线的静态帮助页面,点击Using Visual Leak Detector后有安装帮助,我用的是VC 2010 Express版本(正版的免费编译器可以自己去MS那里下载),转载 2014-01-16 19:58:01 · 823 阅读 · 0 评论 -
VC 2005 & VC 2008 error C2220: warning treated as error - no object file generated
VC 2005 编译过程中出现如下错误:错误 1 error C2220: 警告被视为错误 - 没有生成“object”文件 d:\asdf\asdf\asdf.cpp 167这种错误的原因是:1)是该文件的代码页为英文,而我们系统中的代码页为中文。解决方案:a)新建一个VC项目,然后把代码COPY过来。b)启动Microsoft Visual Studio转载 2013-11-12 22:14:40 · 713 阅读 · 0 评论 -
debug 版本正常,release版本出错的一种解决
今天又碰到了MFC程序 debug版本正常,release 出错的问题。在关闭对话框时,出现 "ntdll.dll 出错" 。解决方法: 在Properties->Linker->Input->Ignore specific default libaraies中输入 msvcrtd.lib。具体原因,不知道为啥。有知道的麻烦告知一下~原创 2013-11-15 21:00:58 · 2608 阅读 · 0 评论 -
VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一个比较好的方法来找原因,通过生成map文件,由于2005取消map文件生成行号信息(vc6.0下是可以生成行号信息的,不知道microsoft怎么想的,在2005上取消了),只能定位在那个函数发生崩溃。这里可以通过生成cod文件,即机器码这一文件,具体定位转载 2013-07-16 15:28:03 · 679 阅读 · 1 评论 -
MFC调用DOS窗口显示信息
AllocConsole Function 为主调进程分配一个新的控制台。 语法 C++ : BOOL WINAPI AllocConsole(void); 参数: 无 返回值 :如果函数成功,返回值是非零值;如果函数失败,返回值是零值。 备注: 一个进程仅能关联一个控制台,所以该函数在主调进程已经具有控制台时将会失败。 一转载 2013-07-17 14:29:41 · 1284 阅读 · 0 评论 -
pointer to incomplete class type is not allowed 错误
VC2010中报的错,前置声明中用到的类,并在此类中也用到,但没有引入头文件。新人不小心容易遇到的问题!~~~转载 2013-07-05 13:22:10 · 1181 阅读 · 1 评论 -
#defDEBUG用法
1#ifdef _DEBUG virtual void AssertValid() const; //assert(断言)valid(有效的,正确的)virtual void Dump(CDumpContext& dc) const; //存储上下文#endif这两个函数是调试用的,第一个函数检查可用性,即是否有效 第二个函数如果未更改的话,最终调用的是Cwnd::Dump转载 2013-10-04 17:25:46 · 954 阅读 · 0 评论 -
C++编译中碰到的问题
VS2010编译编译器可以连接多种库,如C运行库,标准C++库,和旧iostream 库C++包含头文件带 .h,如#include 则visual c++在编译时,自动连接到旧的iostream库中。如果不带.h,并使用了命名空间std, 如#includeusing namespace std;则编译时,链接到标准c++库。运行库分为静态链接库,后缀名.lib,编原创 2013-10-04 17:15:11 · 845 阅读 · 0 评论 -
Debug调试运行正常,但在Release模式下退出程序时报错
在最近的H.265分析器项目中,出现了一个问题,就是在Debug模式下运行正常,但是在Release模式下时,退出程序时,会报出以下错误:the instruction at"0x78d80f87" referenced memory at "0x70665f70" the memory could not be read。在Release调试状态下,出现一个提示First-chance exce转载 2013-09-25 10:20:49 · 2057 阅读 · 0 评论 -
[debug]调试Release版本应用程序
引言如果在您的开发过程中遇到了常见的错误,或许您的Release版本不能正常运行而Debug版本运行无误,那么我推荐您阅读本文:因为并非如您想象的那样,Release版本可以保证您的应用程序可以象Debug版本一样运行。如果您在开发阶段完成之后或者在开发进行一段时间之内从来没有进行过Release版本测试,然而当您测试的时候却发现问题,那么请看我们的调试规则1:规则1: 经常性对开发软转载 2013-09-25 11:55:32 · 752 阅读 · 0 评论 -
error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter
今天用VS2005编译DirectShow程序,发现出来很多莫名其妙的链接错误:如下: error LNK2001: 无法解析的外部符号 "public: virtual long __stdcall CBaseFilter::FindPin(wchar_t const *,struct IPin * *)" (?FindPin@CBaseFilter@@UAGJPB_WPAPAUIPin转载 2013-10-27 17:22:08 · 2329 阅读 · 0 评论 -
LNK2001&LNK2019
LNK2001..转自百度百科学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以然。如果不深入地学习和理解VC++,要想改正连接错误LNK2001非常困难。 初学者在学习VC++的过程中,遇到的LNK20转载 2013-10-27 17:23:09 · 2043 阅读 · 0 评论