上位机调试记录之Debug Assertion Failed!

2024-01-14 20:38

本文主要是介绍上位机调试记录之Debug Assertion Failed!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. Bug现象还原

使用Debug模式调试USB上位机时,出现了下方错误提示,使用Release模式却不会出现!

2.问题定位

将下方代码进行屏蔽后,错误提示消失

Display_data_512x8bit(data);

data_receive_512x8bit +=_T("USB接收端点无数据输出!\r\n");

UpdateData(false);

可以猜测变量data_receive_512x8bit是引起报错的原因

void CUSBprojDlg:: Creat_file(UCHAR * data,bool success)
{CString str;LONG nLen=512;CTime t=CTime::GetCurrentTime();if(success){str=t.Format(_T("D:\\USB_file_recevie\\file_%Y%m%d%H%M%S.hex")); mFile.Open(str,CFile::modeWrite|CFile::modeCreate);         //打开文件mFile.SetLength(0);                                          //清空文件mFile.SeekToEnd();mFile.Write(data,nLen);	mFile.Flush();//强制将缓冲区数据写入磁盘文件						mFile.Close();//关闭文件//Display_data_512x8bit(data);str=t.Format(_T("Saved to file_%Y%m%d%H%M%S.hex"));SetDlgItemText(IDC_DATAIN,str);	 }else{//data_receive_512x8bit +=_T("USB接收端点无数据输出!\r\n");SetDlgItemText(IDC_DATAIN,_T("请先向FPGA发送数据!"));//UpdateData(false);}
}

data_receive_512x8bit为一CString全局Public变量,用于显示接收的512字节数据,与之相关的代码如下,在界面显示时使用UpdateData(false)来刷新。

CString data_receive_512x8bit;DDX_Text(pDX, IDC_data_receive_display, data_receive_512x8bit);data_receive_512x8bit +=_T("USB接收端点无数据输出!\r\n");
SetDlgItemText(IDC_DATAIN,_T("请先向FPGA发送数据!"));
UpdateData(false);
void CUSBprojDlg::Display_data_512x8bit(UCHAR * data_512)
{int i=0;int j=0;int line=1;CString str=_T("512x8bit data receive from USB: \r\nline00:  ");CString tmp_str=_T("");for(i=0;i<512;i++){tmp_str.Format(_T("%02X"),data_512[i]);tmp_str+=_T(" ");str+=tmp_str;if((j!=0)&&(j!=511)&&((j+1)%16==0)) {str+=_T(" \r\n");tmp_str.Format(_T("line%02d:  "),line);str+=tmp_str;line++;}j++;}data_receive_512x8bit =str;data_receive_512x8bit +=_T(" \r\n \r\n");UpdateData(false);
}

3. 解决思路

去掉全局变量data_receive_512x8bit,直接使用函数SetDlgItemTextW()对文本控件IDC_data_receive_display进行操作,

代码修改方法如下:

SetDlgItemTextW(IDC_data_receive_display,data_receive_512x8bit);
void CUSBprojDlg::Display_data_512x8bit(UCHAR * data_512)
{int i=0;int j=0;int line=1;CTime t=CTime::GetCurrentTime();CString str=_T("512x8bit data receive from USB: \r\nline00:  ");CString tmp_str=_T("");for(i=0;i<512;i++){tmp_str.Format(_T("%02X "),data_512[i]);	str+=tmp_str;if((j!=0)&&(j!=511)&&((j+1)%16==0)) {str+=_T(" \r\n");tmp_str.Format(_T("line%02d:  "),line);str+=tmp_str;line++;}j++;}data_receive_512x8bit =str;data_receive_512x8bit +=_T(" \r\n \r\n");data_receive_512x8bit +=t.Format(_T("Saved to D:\\USB_file_recevie\\file_%Y%m%d%H%M%S.hex!\r\n"));SetDlgItemTextW(IDC_data_receive_display,data_receive_512x8bit);  
}

4. 参考:

[1] File: f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\winocc.cpp的子窗口初始化问题 - xiaoshengforever的专栏 - CSDN博客
https://blog.csdn.net/xiaoshengforever/article/details/11882027

这篇关于上位机调试记录之Debug Assertion Failed!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/606441

相关文章

Python UV安装、升级、卸载详细步骤记录

《PythonUV安装、升级、卸载详细步骤记录》:本文主要介绍PythonUV安装、升级、卸载的详细步骤,uv是Astral推出的下一代Python包与项目管理器,主打单一可执行文件、极致性能... 目录安装检查升级设置自动补全卸载UV 命令总结 官方文档详见:https://docs.astral.sh/

统一返回JsonResult踩坑的记录

《统一返回JsonResult踩坑的记录》:本文主要介绍统一返回JsonResult踩坑的记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录统一返回jsonResult踩坑定义了一个统一返回类在使用时,JsonResult没有get/set方法时响应总结统一返回

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

java对接海康摄像头的完整步骤记录

《java对接海康摄像头的完整步骤记录》在Java中调用海康威视摄像头通常需要使用海康威视提供的SDK,下面这篇文章主要给大家介绍了关于java对接海康摄像头的完整步骤,文中通过代码介绍的非常详细,需... 目录一、开发环境准备二、实现Java调用设备接口(一)加载动态链接库(二)结构体、接口重定义1.类型

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

SpringBoot实现文件记录日志及日志文件自动归档和压缩

《SpringBoot实现文件记录日志及日志文件自动归档和压缩》Logback是Java日志框架,通过Logger收集日志并经Appender输出至控制台、文件等,SpringBoot配置logbac... 目录1、什么是Logback2、SpringBoot实现文件记录日志,日志文件自动归档和压缩2.1、

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

《使用nohup和--remove-source-files在后台运行rsync并记录日志方式》:本文主要介绍使用nohup和--remove-source-files在后台运行rsync并记录日... 目录一、什么是 --remove-source-files?二、示例命令三、命令详解1. nohup2.

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址