社区
硬件/系统
帖子详情
为什么在Debug下读写正常的串口程序在Release下就不行了呢?分不够再加啦
fly_woman
2003-12-08 11:53:20
为什么在Debug下读写正常的串口程序在Release下就不行了呢?
...全文
210
10
打赏
收藏
为什么在Debug下读写正常的串口程序在Release下就不行了呢?分不够再加啦
为什么在Debug下读写正常的串口程序在Release下就不行了呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bluebohe
2003-12-08
打赏
举报
回复
你可以勉强在Release下面调试
release版本也能凑合调试,project--setting--c/c++,debug info选program database,
project--setting--link,勾上generate debug info,重新编译
fly_woman
2003-12-08
打赏
举报
回复
用什么函数给CString类型的变量分配空间?
zhangnanonnet
2003-12-08
打赏
举报
回复
应该是你用于接收数据的BUF没有分配空间,在BEBUG下程序会自动分配,但是RELEASE不行
once168
2003-12-08
打赏
举报
回复
m_strReceive = m_strReceive+"\0";/*这个代码不起作用*/
m_strReceive = m_strReceive + pReadBuffer;
这个代码改成:
char buf[0x2]={0,0};
buf[0]=pReadBuffer;
m_strReceive = m_strReceive + CString(buf)
ISunwu
2003-12-08
打赏
举报
回复
m_strReceive是个什么变量?是edit的相关变量么?
fly_woman
2003-12-08
打赏
举报
回复
在Release下单步跟踪就会运行正常,一旦没有断点全速运行就不行了,这是为什么啊?
fly_woman
2003-12-08
打赏
举报
回复
void CTsView::OnCommNotify(WPARAM wParam,LPARAM lParam)
{
CComm *pComm = GetComm();
char pReadBuffer;
CString strUnit;
if((wParam&EV_RXCHAR) == EV_RXCHAR){
if(pComm->ReadComm(&pReadBuffer,1)){
if(pReadBuffer != '$')
m_strReceive = m_strReceive + pReadBuffer;
else{
m_strReceive = m_strReceive+"\0";
UpdateData();
switch (m_strReceive.GetAt(1)){
case CumQuality:
strUnit = "t";
DisposeData(m_strQuality , strUnit);
break;
case QualityFlux:
strUnit = "t/h";
DisposeData(m_strFlux , strUnit);
break;
.
.
.
case WaterDensity:
strUnit = "g/cm3";
DisposeData(m_strWaterDensity , strUnit);
break;
default:
break;
}
UpdateData(FALSE);
m_strReceive.Empty();
}
}
}
SetEvent(pComm->m_hCommMsgEvent);
}
以上代码是串口有数据时的消息函数,在Debug 下时,m_strReceive接收正常,但在Release下时只有一般最多只有四个长度为正确字符串的最后四个字符,偶尔会得到正常数据,为什么?
robinzo
2003-12-08
打赏
举报
回复
CString是自动分配空间的,也是变大小的,可以放入很大的字串,你的问题肯定不是在这里。Debug和Release有一些区别,如Debug版中,如果找不到适用的地址空间会给你返回cc,而Release版中会给你返回某个地址空间中的值,也就是说,你程序中不严谨的地方会导致在Release版中出现错误,如没有区分判断char*字串的null和strlen()=0的情况等等。。。
checkyvc6
2003-12-08
打赏
举报
回复
你能不能说的具体一点,哪个地方出错,哪个地方有问题,你得写出来啊,你这样说神仙也
帮不了你啊
CString是自动分配的,默认构造函数只分配一个字节的长度的空间('\0')
以后在操作过程当中会自动调整大小.
CString strTemp('\0',1024); //这样分配1024的空间每个字节为'\0'
ISunwu
2003-12-08
打赏
举报
回复
吧你读写串口的代码贴出来看看。
MFC中
release
版本和
debug
版本区别
最近MFC写了个
程序
,生成
release
版,原来正常,后来删掉了些控件再编译运行,结果竟然报内存
读写
错误,
debug
却是正常的。后来将“Project Settings” 中 “C++/C ” 项目下优化选项改为Disbale(
Debug
),就又...
Release
和
debug
区别总结
而
Release
通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。
Debug
和 Rel
GDB调试
release
程序
方法1: 如果现在有同一个工程构建出的
Debug
版和
Release
版可执行文件projectD和projectR,如下的命令可以帮助你把
Debug
版中的符号表加到
Release
版中,实现对
Release
版的调试。用发布时的原代码,在原有的编译选项上...
Release
和
debug
而
Release
通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。
Debug
和
Release
VC下发布的
Release
版
程序
崩溃后的异常捕捉与查找
寻找
Release
版程发生异常退出的地方比
Debug
版麻烦得多。发生异常的时候windows通常会弹出一个错误对话框,点击详细信息,我们能获得出错的地址和大概的出错信息,然后可以用以下办法
分
析我们的
程序
。 一. 用...
硬件/系统
2,643
社区成员
17,229
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章