我在使用Visual Studio调试混合的WPF/CLR/非托管本机c++项目时遇到了一个有趣的(相当恼人的)错误,这个错误只发生在Windows XP中。似乎我有一个内存崩溃发生在程序中,它的范围太大了,不能在这里发表。我遇到的问题是,当崩溃发生在程序中时,它只是退出,而不是VS调试器尝试定位异常,我认为这是因为没有抛出异常。程序退出代码实际上是我必须继续下去的唯一信息,而且它只是最小的int值。
有没有人遇到过这种情况,也许能给我指出正确的方向,就其含义而言?
编辑:
继续调查这个问题,我发现我有时可以得到堆栈跟踪和异常,而不是直接的程序退出。这个跟踪将我带到一个向量分配(push)。在程序刚刚退出的情况下,这仍然是执行的最后一行。我假设我在某个地方有损坏的内存,尽管我希望这通常表现为程序转储而不是异常的事实能够帮助我找到正确的方向。
发布于 2012-07-22 01:31:30
//
// MessageId: STATUS_BREAKPOINT
//
// MessageText:
//
// {EXCEPTION}
// Breakpoint
// A breakpoint has been reached.
//
#define STATUS_BREAKPOINT ((NTSTATUS)0x80000003L)
该程序在INT3指令上着陆并触发了一个断点。但是不存在调试器,因此会终止程序。它可能是您在代码中留下的一个杂乱的__debugbreak(),它可能是由程序状态被破坏时的疯狂跳转触发的。
您需要对其进行调试。如果你不能很容易地在你的dev机器上重现它,那么你需要一个来自故障机器的小转储。
https://stackoverflow.com/questions/11583957
复制相似问题