程序已退出,代码为-2147483645

时间:2012-07-20 17:07:30

标签: c++ visual-c++

我在使用Visual Studio调试混合的WPF / CLR / Unmanaged本机c ++项目时遇到了一个有趣(相当恼人)的错误,此错误仅在Windows XP中发生。似乎我在程序中发生了内存损坏,其范围太大而无法在此处发布。我遇到的问题是,当程序中发生崩溃时,它只是在没有VS调试器试图找到异常的情况下退出,我假设因为没有抛出异常。程序退出代码实际上是我必须继续的唯一信息,它只是最小的int值。

有没有人遇到过这种情况,并且可能能够指出我的方向是正确的方向?

编辑:

继续调查这个问题,我发现我有时可以获得堆栈跟踪和异常,而不是直接的程序退出。跟踪将我带到矢量分配(推送)。在程序刚刚退出的情况下,这仍然是执行的最后一行。我认为我在某个地方有腐败的记忆,虽然我希望这通常表现为程序转储而不是例外的事实能够帮助我指出正确的方向。

1 个答案:

答案 0 :(得分:8)

//
// MessageId: STATUS_BREAKPOINT
//
// MessageText:
//
// {EXCEPTION}
// Breakpoint
// A breakpoint has been reached.
//
#define STATUS_BREAKPOINT                ((NTSTATUS)0x80000003L)

该程序登陆INT3指令并触发断点。但是没有调试器存在以便终止程序。它可能是您在代码中留下的迷路__debugbreak(),当程序状态损坏时可能会被疯狂的跳转触发。

你需要调试它。如果你不能轻易地在你的开发机器上重新调用它,那么你将需要一台来自故障机器的小型泵。