C++ 如何在visual studio或输出exe上禁用调试断言对话框

C++ 如何在visual studio或输出exe上禁用调试断言对话框,c++,visual-studio-2010,C++,Visual Studio 2010,如何在visual studio或输出可执行文件上禁用断言对话框。 我正在使用C++。< /P> 当运行我的可执行文件时,我会得到一个带有选项Abort/Retry/Ignore的调试对话框 我已经尝试了以下选项,但没有成功: 即使在注销后也没有成功: 备选案文1: 在工具选项下的即时调试中清除托管、本机或脚本 备选案文2: HKLM\Software\Microsoft.NETFramework 将DbgJITDebugLaunchSetting从10(十六进制)更改为1(十六进制) 备选案文

如何在visual studio或输出可执行文件上禁用断言对话框。 我正在使用C++。< /P> 当运行我的可执行文件时,我会得到一个带有选项Abort/Retry/Ignore的调试对话框

我已经尝试了以下选项,但没有成功: 即使在注销后也没有成功:

备选案文1: 在工具选项下的即时调试中清除托管、本机或脚本

备选案文2: HKLM\Software\Microsoft.NETFramework

将DbgJITDebugLaunchSetting从10(十六进制)更改为1(十六进制)

备选案文3:
  • 启动注册表编辑器并在HKEY_LOCAL_MACHINE子树中找到以下注册表子项: \软件\MICROSOFT\WINDOWS NT\CURRENTVERSION\AEDEBUG

  • 选择调试器值

  • 在“编辑”菜单上,单击“字符串” •要使用Windows调试器,请键入windbg-p%ld-e%ld。 使用Visual C++ 4.2或更早的方式,键入MSVC-P%LD-E%LD。 使用VisualC++ 5或更高版本,键入MSDEV.EXE-P%LD-E%LD。 •要使用Watson博士,请键入drwtsn32.exe-p%ld-e%ld。您还可以通过运行以下命令使Dr.Watson成为默认调试器:drwtsn32.exe-i。
    4.选择“确定”并退出注册表编辑器。

    带有“中止/重试/忽略”选项的调试对话框仅在程序的调试版本中出现。首先,您可以尝试在发行版中编译应用程序。第二个选项是重新定义使此对话框显示的断言宏。当然,只有当您的应用程序是源代码并且能够重新编译时,这些选项才起作用。由于您的应用程序是二进制的,所以只有在调用messagebox以强制跳过messagebox调用时,才能在适当的位置破解此二进制文件。

    更新:您似乎试图使用影响CLR(.NET)应用程序的选项。当使用非托管C++时,它没有任何效果。请参阅项目属性->C/C++->常规->公共语言运行时支持选项。如果它是空的或“不支持”,您可以使用clear unmanaged C++

    但是,我想要一个健壮的解决方案,除了断言禁用空访问和其他崩溃之外,如果您想要什么,请尝试请求它。当应用程序运行到内存中时,会出现访问冲突或未处理的异常等情况。调试断言是一个警告,它只是通知您有什么错误或可能没有。访问冲突是一种严重错误,通常无法恢复。未处理的异常可能会被try-catch块捕获,并且需要了解您的程序,也就是说,您只需处理错误。在应用程序崩溃的情况下,您可以运行另一个进程来监视它并监视它完成。完成后,可以分析返回代码。