Windows 7异常代码:0xc0000409 [英] Windows 7 exception code: 0xc0000409

查看:1641
本文介绍了Windows 7异常代码:0xc0000409的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个C ++ Windows应用程序,该应用程序由另一位程序员完成,因此我必须删除一行代码.在使用Visual Studio 2013重建应用程序后,它在事件日志中与此崩溃:

I have a C++ windows application that was done by another programmer, that I had to remove one line of code. After rebuilding the application with visual studio 2013 it crashes with this in the event log:

Faulting application name: WaveStream.exe, version: 0.0.0.0, time stamp: 0x536122da
Faulting module name: WaveStream.exe, version: 0.0.0.0, time stamp: 0x536122da
Exception code: 0xc0000409
Fault offset: 0x0000bd7f
Faulting process id: 0x8b8
Faulting application start time: 0x01cf6490aee4f557
Faulting application path: C:\Program Files (x86)\PS Audio\WaveStream.exe
Faulting module path: C:\Program Files (x86)\PS Audio\WaveStream.exe
Report Id: efe00d42-d083-11e3-a513-bc305baf9e1e

该应用程序使用QT 4.7.4,并且编译没有错误.我是嵌入式系统程序员,并且几乎没有Windows编程经验.我该怎么办才能弄清楚它为什么崩溃?

The application uses QT 4.7.4, and compiles with no errors. I am an embedded systems programmer and have very little windows programing experience. What can I do to figure out why it is crashing?

丹尼斯

推荐答案

问题的根源在于异常代码:0xc0000409

The clue to the problem is in the exception code: 0xc0000409

0xc0000409 表示 STATUS_STACK_BUFFER_OVERRUN .

换句话说,程序中的某些内容正在写入当前堆栈帧之后,从而破坏了堆栈上的数据.该程序已检测到此情况,而不是让它继续,而是引发了异常.

In other words, something in your program is writing past the current stack frame, corrupting data on the stack. The program has detected this and rather than let it continue, has thrown an exception.

您如何调试呢?有几种选择:

How do you debug this? There are a few options:

1)在调试器中重新运行此程序,并观察其崩溃,锻炼失败的原因.

1) Rerun this in the debugger and watch it crash, workout what failed.

2)如果您对此崩溃了,请将其加载到调试器中,按F5键并尝试执行失败的操作.

2) If you've got a crash dump of this, load that in the debugger, hit F5 and workout what failed.

3)如果您没有崩溃转储,如果您知道崩溃的绝对地址(并且知道该模块始终在以下位置加载),您仍然可以尝试找出崩溃的原因.固定地址),或者如果您知道崩溃位置与故障模块开始之间的偏移量.

3) If you don't have a crash dump you can still attempt to find out the cause of the crash if you know the absolute address of the crash (and know the module always loads at a fixed address), or if you know the offset of the crash location from the start of the faulting module.

上面的崩溃信息告诉您到崩溃故障模块的偏移量.这在故障偏移"字段中报告.在您的示例中,偏移量为0x0000bd7f.

The crash information above tells you the offset into the faulting module of the crash. That's reported in the Fault Offset field. In your example, that is an offset of 0x0000bd7f.

如果您有原始的dll/exe并且它与PDB匹配,则只需将其加载到 DbgHelpBrowser ,转到查询菜单,选择使用DLL相对地址查找符号..." ,然后在字段中输入偏移量并单击查找符号..." .显示屏将移动以向您显示最接近的匹配符号,突出显示该符号并显示有关参数,行号和源代码的任何信息.

If you've got the original dll/exe and it's matching PDB, just load it into DbgHelpBrowser, go to the Query menu, choose "Find Symbol with DLL Relative Address..." then enter the offset in the field and click "Find Symbol...". The display will move to show you the nearest matching symbol, highlighting the symbol and display any info about parameters, line numbers and source code.

这是一个免费工具.你可以在这里得到它: https://www.softwareverify.com/cpp-dbghelp-browser.php

It's a free tool. You can get it here: https://www.softwareverify.com/cpp-dbghelp-browser.php

免责声明.我写了这个工具来做这项工作供我们内部使用.我们最近将其提供给其他所有人.我在尝试理解异常代码0xc0000409的含义时发现了这个问题.

这篇关于Windows 7异常代码:0xc0000409的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆