




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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顶一个! 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下且多线程或进程间使用了消息传递时就会导致无效句柄之类的错误。导致这个错误直接原因是消 息体的参数没有添加,即应该写成:afx_msg LRESULT OnMessageOwn(WPARAM wparam, LPARAM lparam); 非常感谢这篇文章的解析 /article/17/17068.shtm我晕,你定义消息响应函数都不带参数。强。别晕毕竟,我是第一次使用自定义消息,我以为只要格式对了,就可以了,怎么连参数也一定要带呢,尽管我的响应函数不需要参数。MARK Tags: , release, VC/MFC, 版本VC2008生成ReleaseVC2008生成Release版本选择优化选项后居然把我整个函数给跳过了 - VC/MFC / 进程/线程/DLL09月 11th, 2010 by adminPosted in VC/MFC | No Comments 我有一个函数,不是内联的。在打开编译优化选项后,居然整个函数给我跳过了。我用MessageBox放在这个函数内部作测试的,Debug版 本下正常,到了Release版怎么也进不了这个函数,生成调试信息后单步跟踪发现直接就跳过去了。对话框也没跳出来。禁用编译优化选项后一切正常了,这 种问题怎么回事?是不是你的函数没什么用处啊?比如 void myfun() int a=10;这样可能被优化掉代码里怎么写的呢?如果是没用的函数,就是会被优化掉。不如你检查一下那个地方的代码吧,是不是有判断条件啊什么的有问题。那应该是编译器认为你要调用的函数需要优化,而优化之后也有可能把这部分代码给隔离掉,区分优化和不优化的代码。所以它不进来?我只是个人观点,你可以去google下。如果始终在那里跳过,但你的程序运行仍然正常的话,是不是可以说明在该处调用这个函数无意义呢?我还仔细检查过函数内部的判断条件,没有哪种情况它不应该执行的你先把Debug目录清空删除,再重新编译Debug版,看看是不是还正常?不对,看错了,现在Debug版本错误更多。禁用优化以后又正常了诡异。换个编译器试试吧函数没有输出,当然会被优化掉。这个可能要抠具体的优化选项了 权宜之计是针对这一部分代码禁用优化 就冲你这态度,你解决不了这个问题,就算侥幸绕过这个问题, 你早晚还会栽在上面。 Tags: , release, vc2008, 生成release调试VC/MFCrelease 能调试吗 - VC/MFC / 基础类08月 30th, 2010 by adminPosted in VC/MFC | No Comments 我在公司看见有人写的代码全是在release下调试的,debug下全部是异常,程序直接崩溃,然后他们问我干嘛要用debug,我无言以对了,他们拷贝字符串都是这样的:void copystr(char * pIn) int len = strlen(pIn); char * p = new charlen; strcpy(p,pIn);呵呵,我们公司因为工程大,好多人都是release带DEbug信息调试编码的。不我还建议用debug比较好,因为Release回忽略掉一些小问题的。你才crash的时候点击“重试”,看一下callstack把这些问题一一修正给他们弄一个debug环境。如果你公司的人来我这里应聘程序员,我会让他们统统去扫厕所。void copystr(char * pIn) int len = strlen(pIn); char * p = new charlen; strcpy(p,pIn);这个函数也能用吗晕,路过release可以调试是不假不过不建议使用除非迫不得已因为确实有些问题bug下调不出来release状态下可以调试的release和debug只是编译参数不同而已,你也可以命名自己的编译设置具体设置参考:/baicker/archive/2007/08/29/140713.html能调试,但是个别变量可能无法对应,有些只能看内存release 调试有时候鼠标放那,看不到结果。基本debug调。release走一遍主要是我改成DEBUG运行不了,全是runtime error,不能执行,他们叫我直接忽略最最无奈的是100多个工程全是这样的,而且那几个写代码的人同时辞职了你们公司的人的态度真另人受不了无语!有些大部分是没有经过专门学习的半路程序员,只求功能实现,其他代码规范,一律不管,我见得不少,如果你们想知道更牛逼的,我知道在一个正规的项目中有一个这样的类命名:int n1,n2,nxxx,xxx到200多变量int j1,j2 jxxx,xxx到100多,下面还用这些变量,完全是小学生作业;我看了全删了重写的命名变量release 都有优化怎么调试 ?建议 Release 使用LOG来“调试”LINK : fatal error LNK1181: cannot open input file ;/out:Release/Chinese.exe试着用Release来调试,但提示这个错误,是怎么回事? Tags: , release, VC/MFC, 调试release调试VC/MFCrelease 能调试吗 - VC/MFC / 基础类08月 29th, 2010 by adminPosted in VC/MFC | No Comments 我在公司看见有人写的代码全是在release下调试的,debug下全部是异常,程序直接崩溃,然后他们问我干嘛要用debug,我无言以对了,他们拷贝字符串都是这样的:void copystr(char * pIn) int len = strlen(pIn); char * p = new charlen; strcpy(p,pIn);呵呵,我们公司因为工程大,好多人都是release带DEbug信息调试编码的。不我还建议用debug比较好,因为Release回忽略掉一些小问题的。你才crash的时候点击“重试”,看一下callstack把这些问题一一修正给他们弄一个debug环境。如果你公司的人来我这里应聘程序员,我会让他们统统去扫厕所。void copystr(char * pIn) int len = strlen(pIn); char * p = new charlen; strcpy(p,pIn);这个函数也能用吗晕,路过release可以调试是不假不过不建议使用除非迫不得已因为确实有些问题bug下调不出来release状态下可以调试的release和debug只是编译参数不同而已,你也可以命名自己的编译设置具体设置参考:/baicker/archive/2007/08/29/140713.html能调试,但是个别变量可能无法对应,有些只能看内存release 调试有时候鼠标放那,看不到结果。基本debug调。release走一遍主要是我改成DEBUG运行不了,全是runtime error,不能执行,他们叫我直接忽略最最无奈的是100多个工程全是这样的,而且那几个写代码的人同时辞职了你们公司的人的态度真另人受不了无语!有些大部分是没有经过专门学习的半路程序员,只求功能实现,其他代码规范,一律不管,我见得不少,如果你们想知道更牛逼的,我知道在一个正规的项目中有一个这样的类命名:int n1,n2,nxxx,xxx到200多变量int j1,j2 jxxx,xxx到100多,下面还用这些变量,完全是小学生作业;我看了全删了重写的命名变量release 都有优化怎么调试 ?建议 Release 使用LOG来“调试”LINK : fatal error LNK1181: cannot open input file ;/out:Release/Chinese.exe试着用Release来调试,但提示这个错误,是怎么回事? Tags: , release, VC/MFC, 调试release调试VC/MFCrelease 能调试吗 - VC/MFC / 基础类08月 27th, 2010 by adminPosted in VC/MFC | No Comments 我在公司看见有人写的代码全是在release下调试的,debug下全部是异常,程序直接崩溃,然后他们问我干嘛要用debug,我无言以对了,他们拷贝字符串都是这样的:void copystr(char * pIn) int len = strlen(pIn); char * p = new charlen; strcpy(p,pIn);呵呵,我们公司因为工程大,好多人都是release带DEbug信息调试编码的。不我还建议用debug比较好,因为Release回忽略掉一些小问题的。你才crash的时候点击“重试”,看一下callstack把这些问题一一修正给他们弄一个debug环境。如果你公司的人来我这里应聘程序员,我会让他们统统去扫厕所。void copystr(char * pIn) int len = strlen(pIn); char * p = new charlen; strcpy(p,pIn);这个函数也能用吗晕,路过release可以调试是不假不过不建议使用除非迫不得已因为确实有些问题bug下调不出来release状态下可以调试的release和debug只是编译参数不同而已,你也可以命名自己的编译设置具体设置参考:/baicker/archive/2007/08/29/140713.html能调试,但是个别变量可能无法对应,有些只能看内存release 调试有时候鼠标放那,看不到结果。基本debug调。release走一遍主要是我改成DEBUG运行不了,全是runtime error,不能执行,他们叫我直接忽略最最无奈的是100多个工程全是这样的,而且那几个写代码的人同时辞职了你们公司的人的态度真另人受不了无语!有些大部分是没有经过专门学习的半路程序员,只求功能实现,其他代码规范,一律不管,我见得不少,如果你们想知道更牛逼的,我知道在一个正规的项目中有一个这样的类命名:int n1,n2,nxxx,xxx到200多变量int j1,j2 jxxx,xxx到100多,下面还用这些变量,完全是小学生作业;我看了全删了重写的命名变量release 都有优化怎么调试 ?建议 Release 使用LOG来“调试”LINK : fatal error LNK1181: cannot open input file ;/out:Release/Chinese.exe试着用Release来调试,但提示这个错误,是怎么回事? Tags: , release, VC/MFC, 调试release生成执行release下生成的可执行程序在其它机器上不能运行 - VC/MFC / 基础类07月 15th, 2010 by adminPosted in VC/MFC | No Comments 如题,在同事的机器上也可以运行,就是拿到会议室的机器上就不能运行了。属性我也改成的是“在静态库中使用 MFC”。现在也不知道问题在哪里,有经验的给给思路。谢谢。不能运行,有提示少库是mfc问题,没提示是程序问题,或少了什么文件吧你确定是Release版本?你确定两台计算机是同样的操作系统?这种常见情况 一般 都是没有在目标机器上安装过 “可发行组件”, 又叫 “重分发包”, IDE基本都高于vc6.请注册ocx控件,等用depends 看看他的依赖库是否有。然后把相应的依赖库拷贝到目标机器上。如果是COM的依赖库还需要注册一下!报什么错查下依赖库, 看看都引用了那些Dll文件为什么老有人问这个问题,难道大家都不会用搜索引擎?dependency Walk工具看看使用了哪些dll可能因为会议室的机器上没有安装相应的软件(如vc),所有就找不到相应的动态库,用vc的depends工具打开.exe文件查看与.exe文件存在依赖关系的动态库有哪些,在自己电脑上找到这些动态库,然后拷贝到.exe所在目录下,之后重新打包系统。用exescope或者dependency看一下依赖哪些dll 这种问题我一般是看少了什么dll,然后自己去网上下就完了 Tags: , release, 执行, 生成VC/MFCRelease菜单VC/MFC Release下的菜单图标不显示问题Debug下正常 - VC/MFC / 基础类07月 15th, 2010 by adminPosted in VC/MFC | No Comments 如题,Release下程序菜单中的图标为什么都不显示了呢,Bitmap格式的, 在Debug下正常显示啊,工具栏上的图标两种环境下都正常显示请问是怎么回事,又该怎么处理呢?以前碰到 相关结构体没初始化 会出现这样问题,DEBUG 没问题,release就没反应。不晓得是不是这方面原因。GetMenu()-GetSubMenu(4); ASSERT(subMenu-SetMenuItemBitmaps(ID_START_SIMULATION,MF_BYCOMMAN, &m_BitStart,&m_BitStart); /其他菜单图标也都是这样处理的。不知道是不是还要在其他地方设置什么,才能在Release下 正常显示菜单图标?CBitmap m_BitStart;=局部变量,函数结束后析构之后,相关的位图对象也被释放了,解决方法有如下几种:一:改为CBitmap *m_BitStart;二:在最后调用m_BitStart.Detach(),将类对象与GDI对象分离三:将CBitmap定义为静态变量或是类成员变量 Release直接跳过了。filename = )Thread_Map-SuspendThread(); continue; Map_Mutex.Lock();MAZE *room = new MAZE;int length,Left_Length,Right_Length,start_x,start_y;filehead = GetMazeHead(drawpar-filename);length = drawpar-Length;Left_Length = drawpar-Left_Length;Right_Length = drawpar-Right_Length;start_x = drawpar-Start_x;start_y = drawpar-Start_y;CRect rect(0,0,drawpar-rect.Width(),drawpar-rect.Height();CBrush brush;brush.CreateSolidBrush(drawpar-background);dcMemory.Rectangle(&rect);dcMemory.FillRect(&rect,&brush);CPen axisPen; /坐标轴用的画笔axisPen.CreatePen(PS_SOLID,0,drawpar-map);dcMemory.SelectObject(&axisPen);int j = 0; for(int m=drawpar-Start_num_x; mEnd_num_x;m+)for(j=drawpar-Start_num_y; jEnd_num_y;j+)*room = GetHouse(m,j,drawpar-filename);if(Left_Length+(room-x-start_x)*length) x-start_x+1)*length) = rect.Width() | (Right_Length+(room-y-start_y)*length) y-start_y+1)*length+1) = rect.Height()continue;if(room-x y left = 1)dcMemory.MoveTo(Left_Length+(room-x-start_x)*length,Right_Length+(room-y-start_y)*length);dcMemory.LineTo(Left_Leng
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 超简单的两人合伙协议范本
- 小学一年级上学期体育教学工作总结
- 光的干涉教案
- 项目工程管理策划书
- 学校舆情信息收集工作制度
- 北师大版《-长方形的面积》大型赛课教学设计
- 2025临时仓库租用合同模板
- vr设计制作合同标准文本
- KTV清洁合同样本
- 灾害性天气应急预案
- 软件代码审计与测试作业指导书
- 上消化道出血护理疑难病例讨论记
- 城市轨道交通自动售票机
- 环境设计专业考察课程教学大纲
- 2024版互联网企业股东合作协议书范本3篇
- 企业环保知识培训课件
- 110kV立塔架线安全施工方案
- 完形填空-2025年安徽中考英语总复习专项训练(含解析)
- 《岁末年初重点行业领域安全生产提示》专题培训
- 商混站(商品混凝土公司)安全风险分级管控和隐患排查治理双体系方案全套资料汇编完整版
- GB/T 16288-2024塑料制品的标志
评论
0/150
提交评论