MFC中的Debug Assertion Failed 如何查找原因

编写MFC程序时经常会遇到下图所示的断言失败问题

报错对话框中给出了一个目录,是在F盘,但是查找之后会发现电脑里可能根本没有这个目录。

最后发现可以在VS的安装目录下找到这个文件:

\atlmfc\src\mfc 这部分路径是固定的。

找到文件,打开,看到报错提示的592行。

ASSERT(pSocket!=NULL);

原来是指针为空导致ASSERT报错。

可以在自己程序里把指针处理的地方加个ASSERT或者try…catch一下。

参考文献:

【转】dlgdata.cpp line 40 断言失败 - wi100sh - 博客园 https://www.cnblogs.com/wi100sh/p/4219689.html

原文地址:https://www.cnblogs.com/oucsheep/p/9182355.html

时间: 2024-10-31 12:17:54

MFC中的Debug Assertion Failed 如何查找原因的相关文章

MFC:“Debug Assertion Failed!” ——自动生成的单文档程序项目编译运行就有错误

今天照着孙鑫老师的VC++教程学习文件的操作,VS2010,单文档应用程序,项目文件命名为File,也就有了自动生成的CFileDoc.CFileView等类,一进去就编译运行(就是最初自动生成的项目),编译通过,可运行时直接弹出错误框,有点小懵,,,啥都没做就给我看这个: 图一   错误提示框 后来搜索一查,网上好多类似的错误以及解决方案,几乎都试了个遍,有: 方法(1)-重新生成解决方案,或者将项目文件目录下Debug文件夹删了,重新生成Release版: 方法(2)-可以先声明一个临时的C

C++读一行到string中与vc的debug assertion failed!问题

将输入的一行读到string中不需要像用数组那样,考虑给多少大小的空间,这可以使得做acm题更加方便. c++98有两个函数可以读一行到string中,如下: istream& getline (istream& is, string& str, char delim); istream& getline (istream& is, string& str); 例子: #include <iostream> #include <string

void CWnd::SetWindowText(LPCTSTR lpszString) ASSERT(::IsWindow(m_hWnd)); Debug Assertion Failed

void CWnd::SetWindowText(LPCTSTR lpszString) ASSERT(::IsWindow(m_hWnd)); Debug Assertion Failed 原因: ID和Resource中的控件没有关联起来,导致运行的时候,发现hWnd没有相应的对象,没有实例化,hWnd是NULL void CWnd::SetWindowText(LPCTSTR lpszString) ASSERT(::IsWindow(m_hWnd)); Debug Assertion F

Debug Assertion Failed解决方法! !!

Debug Assertion Failed解决方法! !! 2011-10-28 22:23 1569人阅读 评论(0) 收藏 举报 delete测试  VC++调程序出现如下错误:   Debug   Assertion   Failed!       Program:   D:\wyuStud\debug\wyuStud.exe     File:   afx.inl           Line:157      可能问题:1.野指针;2.内存泄露  解决方法:   1.看一看你的程序里

debug assertion failed

vs2008 调试报错 #include "stdafx.h" int _tmain(int argc, _TCHAR* argv[]){ FILE *fp,*ofp; void filecopy(FILE *,FILE *); if(argc == 1) filecopy(stdin,stdout); else while(--argc>0) if((fp=fopen(*++argv,"r"))==NULL) printf("cat:can't o

关于Debug Assertion Failed问题

Debug Assertion Failed program:D\... LINE:1044 Expression:_CrtIsValidHeapPointer(pUserData) for information on how your program can cause an assertion failure,see the Visual C++ documentation on asserts. (Press Retry to debug the application) 学习链表时遇到

C++析构函数造成Debug Assertion Failed的问题

昨天写了两个程序,均出现了析构函数造成Debug Assertion Failed的问题,由于是初学c++怎么想也想不通问题出在哪里.今天早上经人指点终于明白问题所在了.下面贴出代码和问题解析:(以下内容摘自本人在csdn论坛求助的帖子) 第一个问题程序://Teacher_Level.h #pragma once#include<iostream>using namespace std;int num=0;class Teacher{public:char *title; Teacher()

Unity3D中出现错误&quot;Assertion failed: TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD has unfreed allocations&quot;

0x0 背景 在Unity3D 2017.3.0f3中一直报错:  "Assertion failed: TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD has unfreed allocations, size 87488" 激活和取消激活Game Object都会报一次  进了Play Mode更是疯狂报错 在Issue Tracker中搜索发现在IOS开发中有人遇到同样的报错 可是我是

Debug Assertion Failed! Expression: _pFirstBlock == pHead

点击Abort之后,查看调用栈,发现异常在函数return时被时产生,进一步看是vector的析构函数被调用时产生,以前没开发过C++项目,没什么经验,这个错误让我很困惑,第一,我电脑上并没有f盘:第二,我并没有调用析构函数:第三,这到底是个什么错误. 第一个问题,大概是一个虚拟的分区吧,第二个问题,我的vector变量是在一个函数体内部声明使用的,函数返回的时候,自动变量生命期结束,C++应该会调用vector的析构函数来释放这个对象,就在这个时候发生了异常. 关于第三个问题,我在网上查了一些