在程序结尾添加 等待键盘输入的函数,比如C语言的getchar()函数,再运行试一试。可能是直接运行模式下运行速度太快,输出结果,程序运行完了后直接退出程序,肉眼还没有来得及看见输出结果导致的。
尝试以下办法:
右键VS2013图标,选择以管理员权限运行。
关闭VS2013,将工程目录复制到D盘,重新在D盘打开工程,完整重新编译后运行。
另外还有一个可能,注意查看编译过程是否有错误警告,如果有,需要先完善代码。
偶在虚拟机上试验了一个所谓的热键式硬盘锁
>
1、解压下载的文件。
2、复制文件“debugexe”到系统目录下。
3、系统目录一般为:C:\WINNT\System32 64位系统为C:\Windows\SysWOW64
4、最后点击开始菜单-->运行-->输入regsvr32 debugexe后,回车即可解决!
出现“Debug Assertion Failed错误”是因为你程序中的断言失败了,也就是这一句话:
ASSERT(pActivateView == this);
Assert是SystemDiagnosticsDebug类的一个静态方法,只在debug的状态下起作用,如果程序是编译成release的,那么该代码会被忽略。
Assert放的作用是检查输入条件(也就是该方法的参数)是否是“True"如果是什么都不会发生,如果是“False”则会抛出异常。
跟据你给的代码来看,应该你传入的参数pActivateView 与调用Assert的方法所在的类的实例(用this表示)不是同一个引用(也就是不是指向同一个实例)。你可以再检查一下你的代码可以跟踪到 mfc提供的源代码内部,(注:如果打开了mfc源代码,设置了断点,但是跟不进去,那就需要更新PDB文件,具体网上搜)
打开 wincorecpp文件(D:\Program Files\Microsoft Visual Studio NET 2003\Vc7\atlmfc\src\mfc)。查看 312 行,所在函数如下:
CWnd PASCAL CWnd::FromHandle(HWND hWnd)
{
CHandleMap pMap = afxMapHWND(TRUE); //create map if not exist
ASSERT(pMap != NULL);
CWnd pWnd = (CWnd)pMap->FromHandle(hWnd);
#ifndef _AFX_NO_OCC_SUPPORT
pWnd->AttachControlSite(pMap);
#endif
ASSERT(pWnd == NULL || pWnd->m_hWnd == hWnd);
return pWnd;
}
断言就是 Assert( pWnd == NULL || pWnd->m_hwnd == hWnd );也就是读取句柄映射表错误,有2种可能:
1你传入的窗口句柄为空,也就是生成了窗口对象但是没有使用 Create创建窗口。
2窗口所在线程不是当前所在线程,那么使用FromHandle读取映射窗口指针或者映射临时窗口指针必然会出错。窗口都是线程相关的噢
你点击菜单命令出错,你就有可能你的菜单命令执行的代码有 FromHandle语句,你看看,一定就是它
Debug模式启动1启动Android Studio打开一个demo程序,2点击工具栏的调试按钮或者点击菜单“Run”-“Debug”,3在”Choose Device“对话框中,选择设备,4设置好断点,然后让应用程序断下来。(注:设置断点的时机可以随便选,只要符合自己的需求就可以了),ENDAttach方式调试点击菜单”Run“-”Attach debuger to Android process“在”Choose Process“对话框中,选择需要attach的进程,3设置好断点,然后让应用程序断下来。
一在程序中设置断点。二在运行j2se程序时使用debug模式运行,程序执行到断点时,会自动启动debug模式
debug模式中的 *** 作
三个键 *** 作,f5在执行代码时,进入方法内部进行查看,其它的与f6相同。f6:直接执行代码的下一句内容f8:将代码执行到下一个断点,如果没有断点,则将代码执行到程序结束
以上就是关于keil中程序在debug运行模式下正常,退出debug模式直接启动程序不能正常运行全部的内容,包括:keil中程序在debug运行模式下正常,退出debug模式直接启动程序不能正常运行、MFC debug或者release时无法启动程序 拒绝访问、debug对硬盘启动加口令等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)