首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows 7异常代码: 0xc0000409

Windows 7异常代码: 0xc0000409
EN

Stack Overflow用户
提问于 2014-05-01 22:33:39
回答 3查看 61.3K关注 0票数 11

我有一个由另一个程序员完成的C++ windows应用程序,我必须删除一行代码。使用visual studio 2013重新生成应用程序后,它会崩溃,并在事件日志中显示以下内容:

代码语言:javascript
运行
复制
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编程经验。我可以做些什么来找出它崩溃的原因?

丹尼斯

EN

回答 3

Stack Overflow用户

发布于 2018-04-12 02:17:33

问题的线索在异常代码中: 0xc0000409

0xc0000409表示STATUS_STACK_BUFFER_OVERRUN.

换句话说,程序中的某些东西正在写入当前堆栈帧之外,损坏了堆栈上的数据。程序已经检测到这一点,而不是让它继续下去,而是抛出了一个异常。

你是如何调试它的?有几个选项:

1)在调试器中重新运行它,并观察它崩溃,找出失败的地方。

2)如果你有一个崩溃转储,将它加载到调试器中,点击F5并找出失败的地方。

3)如果你没有崩溃转储,你仍然可以尝试找出崩溃的原因,如果你知道崩溃的绝对地址(并且知道模块总是在固定的地址加载),或者如果你知道崩溃位置从出错模块开始的偏移量。

上面的崩溃信息告诉你崩溃的故障模块的偏移量。这将在错误偏移量字段中报告。在您的示例中,这是一个偏移量0x0000bd7f。

如果你有原始的dll/exe和匹配的PDB,只需将它加载到DbgHelpBrowser中,转到Query菜单,选择"Find Symbol with DLL Relative Address..."然后在字段中输入偏移量并单击"Find Symbol..."。显示屏将移动以显示最接近的匹配符号,突出显示该符号,并显示有关参数、行号和源代码的任何信息。

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

免责声明。我写这个工具就是为了让我们内部使用。我们最近让其他所有人都可以使用它。在试图理解异常代码0xc0000409的含义时,我发现了这个问题。

票数 19
EN

Stack Overflow用户

发布于 2014-05-02 12:08:03

尝试为应用程序创建崩溃转储。有关如何做到这一点,请参阅this StackOverflow questionMSDN documentation。一旦您有了崩溃转储文件,在Visual Studio调试器中打开它,您将能够看到异常和异常的调用堆栈,这应该会有所帮助。

票数 3
EN

Stack Overflow用户

发布于 2021-01-20 01:48:45

!分析windbg中的-v

它会为你做很多工作。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23409809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档