- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个在嵌入式 Windows XP 机器上运行的 DX9 应用程序。当让它自动过夜进行浸泡测试时,它会在大约六到八小时后崩溃。在我们的开发中。机 (Win 7) 我们似乎无法重现此问题。我也相当确定这不是内存泄漏。
__try/__except
,它就不会崩溃。我知道在调试中,本地堆栈周围有一些额外的字节填充,这可能会“隐藏”本地数组越界访问,或者某种未初始化的变量正在偷偷溜走。
所以我有两个问题:
__try/__except
的行为是否类似于调试,即使在发布时也是如此?最佳答案
如果你正在使用 __try{ } __except()
你不应该。
这些和 C++ 代码不能很好地混合。 (例如,您不能将 C++ 对象放在用它们包装的函数的堆栈上。如果您使用 catch(.. .)
(带有省略号)它与 __except()
try..catch
和 __try..__except
在调试和发布时的行为相同。
如果您怀疑您的问题是意外异常,您应该阅读以下所有内容:
SetUnhandledExceptionFilter()
_set_se_translator()
_CrtSetReportMode()
_RTC_SetErrorFunc()
_set_abort_behavior()
_set_error_mode()
_set_new_handler()
_set_new_mode()
_set_purecall_handler()
set_terminate()
set_unexpected()
_set_invalid_parameter_handler()
_controlfp()
使用前两个中的一个可能会让您很快查明您的问题。如果您希望对过程中可能出现的所有错误情况进行绝对控制,剩下的就在那里。
具体来说,使用 SetUnhandledExceptionFilter()
,您可以设置一个函数过滤器,记录导致异常的代码地址。然后,您可以使用调试器来查明该代码。使用 DbgHelp 库和提供给过滤器函数的信息,您可以编写一些代码来打印出崩溃的完整堆栈跟踪,包括符号和行号。
确保您设置构建配置,以便为发布构建发出调试符号。他们只能提供帮助,不会做任何事情来减慢您的应用程序(但可能会使它变大)
关于C++: __try...__except;在 Release模式下隐藏崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692784/
我在这里为游戏机器人提供了这个循环,它需要 __try __ except 以防止注入(inject)代码时发生即时崩溃。但是,我收到错误:无法在需要对象展开修复的函数中使用 __try。 我已经查看
您好,再次打扰一下 我正在阅读 Intel 的“Detecting Multiprocessor Topology in IA-32 Architecture”。我正在重新编写示例。但是我在代码中读到
您好,再次打扰一下 我正在阅读 Intel 的“Detecting Multiprocessor Topology in IA-32 Architecture”。我正在重新编写示例。但是我在代码中读到
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 9 年前。 这个问题是由于打字错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在
我有一个在嵌入式 Windows XP 机器上运行的 DX9 应用程序。当让它自动过夜进行浸泡测试时,它会在大约六到八小时后崩溃。在我们的开发中。机 (Win 7) 我们似乎无法重现此问题。我也相当确
我有一个主要用 C 编写的库,它的某些部分应该是线程安全的,并且我使用全局自旋锁来保护代码的关键部分。 现在我的问题是: 我应该从受自旋锁保护的关键部分内部调用用户的一些回调,以防这些回调生成异常,在
我正在处理一个函数和一个子函数,子函数在函数内被调用。两者都有一个 __try .. __except 子句,我想看看函数的一般异常处理,以及子函数的具体异常处理,换句话说: int function
我想知道关于 C++ 的 try/catch/finally block 。我见过这些带有两个下划线的命令,比如 __try。但是 MVSC 2010 项目也可以在没有下划线的情况下运行。那么什么时候
我有使用 3rd 方库的代码。 该库偶尔会引发访问冲突异常。一个基本的 try/catch 没有捕捉到错误,程序会硬崩溃。 我可以使用 __try __except 来捕获错误,记录它,然后优雅地退出
Microsoft 批准的设置线程名称的方法无法在启用/EHsc 的情况下进行编译。编译器告诉我 C2712:不能在需要对象展开的函数中使用 __try http://msdn.microsoft.c
众所周知,Windows SEH 不支持 C++ 异常处理机制。我们不能在单个函数中使用 try 和 __try。这将导致编译器错误: __try { try { MayTh
我正在将使用 VC++ 6.0 编写的软件迁移到 VS 2010/VC++2010。我有一个不能在 Debug模式下编译的项目。我有: LBSC_AppUserInfoList *
我正在尝试使用 VC++ 的 try-except 语句将一些代码移植到 MinGW: bool success = true; __try { //... } __except ((EXCE
我想知道捕获我抛出的异常的更好方法是:它是 __try/__except block 还是 try/catch block ? 我是用 C++ 编写的,该程序只能在 Windows 上使用,所以可移植
我是一名优秀的程序员,十分优秀!