VS2010 Debug Assert Failed 备忘

在调试程序时遇到Debug Assert Failed错误,原因是日志文件打开未初始化和设定错误的文件路径。解决方案包括在适当位置初始化日志配置,并修正文件路径以适应实际存在的磁盘分区。此外,还解决了VS2010中关于_sws_freeContext、_sws_scale和_sws_getCachedContext的链接错误,通过检查并添加缺失的lib库解决了问题。
摘要由CSDN通过智能技术生成

最近调程序,好不容易跑通了,结果出现了Debug Assert Failed的错误,具体错误信息如下图所示:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

经过查找,发现是两个原因导致的,一个是日志记录文件在打开调用的时候,忘记了初始化。

static void ConfigSysLog()
 {
 
 FILE* pFile = fopen("d://fodsys.log", "a");  
    Output2FILE::Stream() = pFile; 
 FILELog::ReportingLevel() = FILELog::FromString("INFO");

  //FILE_LOG(logINFO) << "云台ip is " << FodUtil::cws2s(m_SysConfig.PtzIp);

 
 }

对于这个问题,在对话框的构造函数中添加

FodUtil::ConfigSysLog();

 <

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,"debug assertion failed"通常是在程序执行过程中遇到编译器或运行时环境内置的断言检查失败时抛出的一个错误。断言是程序员用来检查程序内部条件的一种机制,它们通常包含一些预设为真的条件,如果这些条件在特定情况下不满足,就会触发错误,提示开发者程序中的某个假设出现了问题。 当看到这样的错误信息时,可能的情况有: 1. 你在代码中使用了`assert`宏,这个宏在调试模式下(通常通过`#define NDEBUG`关闭)不会被启用,但在发布版本中会检查其内的表达式是否为真。如果为假,就会显示"assertion failed",表示你在某个关键点上发现了一个异常条件。 2. 某个动态内存分配失败,如`malloc`或`calloc`返回`NULL`,但代码中依赖于其成功。 3. 数组越界、指针访问非法内存、类型转换错误等可能导致的未定义行为。 解决这个问题的步骤包括: 1. **检查断言条件**:查看错误时的代码行,理解`assert`检查的条件是什么,为何在这个时候失败。 2. **重现错误**:尝试复现导致断言失败的输入或操作,这有助于定位问题。 3. **日志输出**:如果没有显式的断言,可能是隐含的错误,如数组长度不足,检查相关的变量值和计算过程。 4. **使用调试工具**:使用调试器(如GDB)逐步执行,观察程序状态变化,找出问题所在。 5. **错误日志**:如果程序有记录错误日志功能,查看是否有其他有用的上下文信息。 6. **修复代码**:根据错误原因修改代码,确保所有条件检查正确,避免潜在的bug。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值