Nik*_* R. 5 debug windows-8.1 visual-studio-2013
我用 iexplore 浏览,但它因消息而崩溃
C000041D
IE
iexplore.exe 中 0x7149B7C0 处的未处理异常:0xC000041D:在用户回调期间遇到未处理的异常。
AFAIK 0x 表示十六进制代码,714...是程序计数器,C00...是错误代码。我能做些什么来调查这个错误?我运行了已捕获程序的 Visual Studio。
小智 6
我发现 0xC000041d = STATUS_FATAL_USER_CALLBACK_EXCEPTION
发生的情况似乎是由于应用程序创建的早期线程,应用程序以异常代码 0xc000041d 退出。
单击以阅读更多内容并查看源代码。。
小智 5
0xC000041d是Microsoft 的ntstatus.h头文件中定义的NTSTATUS代码常量:
定义名称 ( MessageId)STATUS_FATAL_USER_CALLBACK_EXCEPTION及其描述为:
"An unhandled exception was encountered during a user callback."
Run Code Online (Sandbox Code Playgroud)
NTSTATUS代码通常在通信系统信息时使用,例如在 Windows 系统和设备驱动程序之间,有时在 Windows 和应用程序之间:
还可以使用 Microsoft 错误查找工具查找NTSTATUS代码的含义:
正如描述所示,Windows在调用用户模式 ( https://www.tutorialspoint.com/User-Mode-vs-Kernel-Mode ) 回调函数时遇到异常(异常情况)时,会使用此特定的NTSTATUS代码(https://en.wikipedia.org/wiki/Callback_(computer_programming))。
有很多情况都可以生成此消息。因此,仅通过NTSTATUS代码搜索互联网0xC000041d可能会产生不相关的结果。0x7149B7C0当还包括进程的确切文件名(在本例中为 iexplore.exe)、错误模块(见下文)和/或什至可能是确切的内存地址(在本例中)时,可能会显示更多相关结果。
由于程序的编译/构建版本略有不同、执行模型不同(例如,Windows 的 32 位版本与 64 位版本)以及模块(.dll、.exe),搜索完整的内存地址可能会有点棘手。 、.sys 文件等一起构成执行程序代码)被加载到不同的基地址。仅匹配地址的最后四个字符B7C0可能足以表明相关问题。
为了实际调试问题,可以使用 Visual Studio 查看导致异常的线程的调用堆栈:
调用堆栈显示了异常发生时相互调用的不同模块和这些模块中的方法。模块名称可以指示问题发生时程序正在执行的操作。
如果符号(https://devblogs.microsoft.com/devops/understanding-symbol-files-and-visual-studios-symbol-settings/)可用于导致问题的模块 - 甚至可能是源这些模块的代码文件 - 调试变得更容易。