程序编译没问题,但是一运行就出现这个错误!Debug Assertion Failed!!
谁能帮我详细讲讲这个错误出现的原因,解决办法!
我还是个新手,希望大家多多包涵,尽量讲细点,谢谢!!
谁能帮我详细讲讲这个错误出现的原因,解决办法!
我还是个新手,希望大家多多包涵,尽量讲细点,谢谢!!
解决方案 »
- 多线程参数问题(就是线程带参数,如何创建)
- 菜鸟求助,头文件互相包含问题
- 对话框资源为未声明过的标识符
- 网络只能发送数据而不能接收到数据???
- 有一个宏定义看不懂,请指教。VC中很多写法都没有见过,请问有没有相关的书比较详细的介绍这些的,谢谢。顶者有分。
- 请教如何为动态创建的控件设置字体?SetFont不管用,请各位飘过的神仙下凡,来者有分
- 关于spin按钮配合输入框edit box的使用!
- MFC程序初始化后收到的第一个消息是什么?
- Help!!!!!!A very simple question!
- VC6.0开发出来的管理系统后台和客户端程序可以同时在同一台XP系统的电脑上运行吗?
- 怎样在MFC Extention DLL 中创建FrameWnd 50分在线跪求,各位高手帮个忙吧◎!!!
- 如何从链路层提取IP数据包
我还是慢慢找变量吧
引起这种错误的主要原因是什么呢 ?!
ASSERT(P == NULL);
当指针P为空时,则出现断言错误
2)程序正确运行,必须有一些东西作保证:比如逻辑的正确性,程序的可靠性等等。
3)debug版本的程序没有问题,不能说明release的程序也没有问题。
4)出现LZ说的情况,使因为违反了MFC提供的ASSERT,或者自己写的ASSERT,如果是自己的写的,那么比较好处理。查看一下代码,可能就知道原因。
其实,MFC的ASSERT也是同样的原理设计的,就是:开发人员认为客户根本就不应该提供这个类型的数据或者这个值得数据,或者说如果提供这样的值,程序就会出现问题。所以
所以,这就是说:LZ需要查看自己的代码,但是,自己的代码,自己看,往往会认为没有什么问题,所以碰到这样的问题,LZ
可以考虑
1。坚持单步跟踪自己的源代码,这是自己调试的最好的方法,看程序是否真的按照自己的设计逻辑来走,观察重要变量是否真的是自己想要的值。
2。学会查看调用堆栈,当程序出现错误时,选择重试,而不是终止,这样,就会出现断点,然后从下往上找,找到问题的根源,这个能比较好的改正问题。不过,这种方法对于多线程程序调试有一定的局限性。
3。输出程序的日志,这样可以大概的判断程序出现问题的地方,然后再分析较小范围的代码,这样较好。