欢迎来到天天文库
浏览记录
ID:32269474
大小:94.50 KB
页数:12页
时间:2019-02-02
《关于debug和release的一些问题及解决方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、[release][版本][调试]release版本下调试正常运行exe出错-VC/MFC/基础类10月9th,2010byadminPostedinVC/MFC
2、NoComments»我做的一个调用dll的程序,在debug下调试和运行exe都正常在release下调试也正常,但是直接运行release下的exe就会挂掉,请高人指点一下,到底是什么原因。程序中有调用外部工具执行解压和压缩,因为没有使用多线程,在解压缩的时候会使主框架无响应,在这样的状态下进入调用dll的模块,然后程序执行一半就挂掉了,是不是和解压缩有关呢?不会是跟路径有关吧?程序中使用的相对路径???跟路径无关,都
3、是相对路径而且release下调试是通过的,能正常运行得出结果但是,直接执行release下的exe文件就挂掉了,很奇怪运行就挂掉是指,没有响应?程序崩溃?程序直接消失?没有响应的话,是某个地方阻塞掉了,可以根据程序流程来跟踪,看执行到哪里才没响应的.程序崩溃的话,看看提示是什么,再跟踪程序流程.程序直接消失的话,多半是栈溢出了.挂掉的时候attachprocess一下,再查看堆栈,可以定位出在哪个函数挂掉了。<<很可能就是路径的问题release调试的时候,可以设置工作目录,其他相对路径都是基于这个工作目录release运行的时候,工作目录应该是其所在的文件夹用几个messageb
4、ox调试的看看一定是路径问题!把dll放到release一份看看。把dll放到release目录下,再直接运行exe文件试试.--路径不正确吧。一些指针变量未初始化??字节对齐方式不对??在PostMessage或者在SendMessage处查看,我也碰到这问题,就是这么解决的.80%是相对路径,改成绝对路径试试有没有考虑过权限的问题,调试的时候程序是有DEBUG权限的,直接运行是没有这么高的权限+看下库依赖问题depends<顶一个!5、th,2010byadminPostedinVC/MFC6、NoComments»本人的聊天程序在debug的版本下可以顺利发送和接收对方聊天消息,但是在release版本下却出现了严重问题,症状如下:第一次发送消息,对方能正常接收并显示,当第二次发送消息对方接收到消息后,也能显示,但接着程序就出错,按“调试”按钮后就进入一个汇编代码文件,按F5往下运行就弹出“无效的句柄”对话框。我现在不知该如何对release版本进行调试,只猜测问题可能出在以下函数中的ReceiveFrom():UINT CUUClientDlg::ChatRecvListening(LPVOID pParam)/7、/等待接收对方消息的多线程处理函数{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;8、error=pSock->GetLastError();return FALSE;}::SendMessage(pDlg->GetSafeHwnd(),WM_RECV_CHATMSG,0,0);}return TRUE;}有无特殊的设置检查下和Debug版有何不同咯::SendMessage()改成PostMessage()试下。终于找到原因,原来是自定义消息的问题。自定义消息的消息参数。 MFC为我们提供了很好的消息机制,更增加了自定义消息,好处我就不用多说了。这也存在debug跟release的问题吗?答案是肯定的。在自定义消息的函数体声明时,时常会看到这样的写法:afx_msg9、 LRESULT OnMessageOwn(); Debug情况下一般不会有任何问题,而当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消息体的参数没有添加,即应该写成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam);非常感谢这篇文章的解析http://dev.csdn.net/article/17/17068.shtm我晕,你定义
5、th,2010byadminPostedinVC/MFC
6、NoComments»本人的聊天程序在debug的版本下可以顺利发送和接收对方聊天消息,但是在release版本下却出现了严重问题,症状如下:第一次发送消息,对方能正常接收并显示,当第二次发送消息对方接收到消息后,也能显示,但接着程序就出错,按“调试”按钮后就进入一个汇编代码文件,按F5往下运行就弹出“无效的句柄”对话框。我现在不知该如何对release版本进行调试,只猜测问题可能出在以下函数中的ReceiveFrom():UINT CUUClientDlg::ChatRecvListening(LPVOID pParam)/
7、/等待接收对方消息的多线程处理函数{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;
8、error=pSock->GetLastError();return FALSE;}::SendMessage(pDlg->GetSafeHwnd(),WM_RECV_CHATMSG,0,0);}return TRUE;}有无特殊的设置检查下和Debug版有何不同咯::SendMessage()改成PostMessage()试下。终于找到原因,原来是自定义消息的问题。自定义消息的消息参数。 MFC为我们提供了很好的消息机制,更增加了自定义消息,好处我就不用多说了。这也存在debug跟release的问题吗?答案是肯定的。在自定义消息的函数体声明时,时常会看到这样的写法:afx_msg
9、 LRESULT OnMessageOwn(); Debug情况下一般不会有任何问题,而当你在Release下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消息体的参数没有添加,即应该写成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam);非常感谢这篇文章的解析http://dev.csdn.net/article/17/17068.shtm我晕,你定义
此文档下载收益归作者所有