- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(关于DEBUG和RELEASE的一些问题及解决方法
[release][版本][调试]release版本下调试正常运行exe出错 - VC/MFC / 基础类
10月 9th, 2010 by adminPosted in VC/MFC | No Comments ?
我做的一个调用dll的程序,在debug下调试和运行exe都正常在release下调试也正常,但是直接运行release下的exe就会挂掉,请高人指点一下,到底是什么原因。程序中有调用外部工具执行解压和压缩,因为没有使用多线程,在解压缩的时候会使主框架无响应,在这样的状态下进入调用dll的模块,然后程序执行一半就挂掉了,是不是和解压缩有关呢 ?不会是跟路径有关吧?程序中使用的相对路径???跟路径无关,都是相对路径而且release下调试是通过的,能正常运行得出结果但是,直接执行release下的exe文件就挂掉了,很奇怪运行就挂掉是指,没有响应?程序崩溃?程序直接消失?没有响应的话,是某个地方阻塞掉了,可以根据程序流程来跟踪,看执行到哪里才没响应的.程序崩溃的话,看看提示是什么,再跟踪程序流程.程序直接消失的话,多半是栈溢出了.挂掉的时候attach process一下,再查看堆栈,可以定位出在哪个函数挂掉了。很可能就是路径的问题release调试的时候,可以设置工作目录,其他相对路径都是基于这个工作目录release运行的时候,工作目录应该是其所在的文件夹用几个messagebox调试的看看一定是路径问题!把dll放到release一份看看。把dll放到release目录下,再直接运行exe文件试试.- - 路径不正确吧。 一些指针变量未初始化??字节对齐方式不对??在PostMessage或者在SendMessage处查看,我也碰到这问题,就是这么解决的.
80%是相对路径 ,改成绝对路径试试有没有考虑过权限的问题,调试的时候程序是有DEBUG权限的,直接运行是没有这么高的权限+看下库依赖问题 depends顶一个!
Tags: , release, 版本, 调试
[release][版本][VC/MFC]急!!~~release版本出现问题 - VC/MFC / 基础类
09月 17th, 2010 by adminPosted in VC/MFC | No Comments ?
本人的聊天程序在debug的版本下可以顺利发送和接收对方聊天消息,但是在release版本下却出现了严重问题,症状如下:第一次发送消息,对 方能正常接收并显示,当第二次发送消息对方接收到消息后,也能显示,但接着程序就出错,按“调试”按钮后就进入一个汇编代码文件,按F5往下运行就弹出 “无效的句柄”对话框。我现在不知该如何对release版本进行调试,只猜测问题可能出在以下函数中的ReceiveFrom():
UINT ? CUUClientDlg::ChatRecvListening(LPVOID ? pParam)//等待接收对方消息的多线程处理函数 { CUUClientDlg* ? pDlg=(CUUClientDlg*)(AfxGetApp()- m_pMainWnd); CChatSocket* ? pSock=new ? CChatSocket(pDlg); SOCKET* ? phSocket ? =(SOCKET ? *)pParam; CString ? str;
pSock- Attach(*phSocket); int ? len; while(1) { len=pSock- ReceiveFrom(buf,sizeof(buf),strIP,nPort,0); if(len==SOCKET_ERROR) { int ? error; error=pSock- GetLastError(); return ? FALSE; } ::SendMessage(pDlg- GetSafeHwnd(),WM_RECV_CHATMSG,0,0); } return ? TRUE; }有无特殊的设置 检查下和Debug版有何不同咯::SendMessage()改成PostMessage()试下。终于找到原因,原来是自定义消息的问题。
自定义消息的消息参数。 ? MFC为我们提供了很好的消息机制,更增加了自定义消息,好处我就不用多说了。这也存在debug跟release的问题吗?答案是肯定的。在自定义消息 的函数体声明时,时常会看到这样的写法:afx_msg ? LRESULT ? OnMessageOwn(); ? Debug情况下一般不会有任何问题,而当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致
文档评论(0)