Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 碰撞转储分析_.net_Winapi_Crash Dumps - Fatal编程技术网

.net 碰撞转储分析

.net 碰撞转储分析,.net,winapi,crash-dumps,.net,Winapi,Crash Dumps,我正在开发和支持Win32/.NET应用程序。该应用程序是由.NET模块扩展的非托管/本机可执行文件。上一次发布后,它开始随机崩溃。它只在生产环境中崩溃,我无法重现该错误。我们通常对所有线程使用try/catch块,但没有任何内容被记录。不幸的是,在生产版本中没有AppDomain未处理的异常挂钩 我得到的唯一信息是系统事件日志中的以下条目: Error XX.XX.XXXX XX:XX:XX Application Error 1000 (100) "Faulting appli

我正在开发和支持Win32/.NET应用程序。该应用程序是由.NET模块扩展的非托管/本机可执行文件。上一次发布后,它开始随机崩溃。它只在生产环境中崩溃,我无法重现该错误。我们通常对所有线程使用try/catch块,但没有任何内容被记录。不幸的是,在生产版本中没有AppDomain未处理的异常挂钩

我得到的唯一信息是系统事件日志中的以下条目:

Error XX.XX.XXXX XX:XX:XX Application Error 1000 (100) "Faulting application name: XXXXX.EXE, version: X.X.0.0, time stamp: 0xXXXXXXXX Faulting module name: KERNELBASE.dll, version: 6.3.9600.18666, time stamp: 0xXXXXXXXX Exception code: 0xebad53fc Fault offset: 0x00015608 Faulting process id: 0xXXX Faulting application start time: 0xXXXXXXXXXXXXXXX Faulting application path: C:\Program Files (x86)\XXXXX\XXXX.EXE Faulting module path: C:\WINDOWS\SYSTEM32\KERNELBASE.dll Faulting package full name: Faulting package-relative application ID: " Error XX.XX.XXXX XX:XX:XX .NET Runtime 1026 None Application: XXXXX.EXE Framework Version: v4.0.30319 Description: The process was terminated due to an unhandled exception. Exception Info: exception code ebad53fc, exception address 753B5608 Stack: 错误XX.XX.XXXX XX:XX:XX 应用程序错误1000(100)“出错的应用程序名称:XXXXX.EXE,版本:X.X.0.0,时间戳:0xXXXXXXXX 故障模块名称:KERNELBASE.dll,版本:6.3.9600.18666,时间戳:0xXXXXXXXX 异常代码:0xebad53fc 故障偏移量:0x0001568 出错进程id:0xXXX 故障应用程序启动时间:0xxxxxxxxxxxxxx 出现故障的应用程序路径:C:\Program Files(x86)\XXXXX\XXXX.EXE 故障模块路径:C:\WINDOWS\SYSTEM32\KERNELBASE.dll 故障包全名: 错误的包相对应用程序ID:“ 错误XX.XX.XXXX XX:XX:XX.NET运行时1026无应用程序:XXXXX.EXE 框架版本:v4.0.30319 描述:由于未处理的异常,进程已终止。 异常信息:异常代码ebad53fc,异常地址753B5608 堆栈: 事件日志中存储的事件表明.NET代码中出现了错误

我已要求客户在每次应用程序崩溃后使用Windows任务管理器创建崩溃转储。几天后,我得到了一些DMP文件,但那里没有有趣的信息。大多数线程都处于等待或GetMessage(UI)状态。没有KERNELBASE.dll_未处理的ExceptionFilter或类似过程调用。崩溃转储没有关于异常和异常代码的信息。一切看起来都很好

我已经做了一些实验,并从.NET代码手动启动了一些应用程序崩溃。实验性崩溃转储包含有用的信息。尤其是从.NET代码通过KERNELBASE.dll传递的堆栈帧_未处理的异常筛选器


我想知道为什么来自客户的崩溃转储看起来很好,为什么事件日志中记录的事件说出错模块是KERNELBASE.DLL,但错误发生在.NET运行时。

我建议在用户计算机上创建以生成崩溃转储。应该比任务管理器方法更可靠。当然,当用户在事后创建转储时,没有异常记录。您需要从未处理的异常过滤器在软件中创建转储文件,或者按照@zett42的建议使用WER。
ebad53fc
这是非常独特的,很少出现异常代码。我从搜索程序使用的模块中的4个原始字节开始。在崩溃转储中,我找到了存储异常代码的内存地址。找到的内存地址属于Stack64节。从这些信息中,我找到了可能导致异常的线程。我还重建了一个完整的堆栈跟踪,但是没有关于未处理异常的信息。堆栈跟踪中的最后一个调用是:user32!NtUserSetFocus+0xc。可能与的重复