问题描述
我从Windows应用商店应用提交流程(通过审阅发送)一个小型转储,因为在我的应用程序崩溃。我有装载我的应用程序的符号的问题,因为在 App.ni.exe
时出现错误,我不知道从哪里来的文件。
I got a minidump from the Windows Store Apps submission process (sent by a reviewer) because of a crash in my app. I am having problems loading the symbols for my app, because the error occurs inside App.ni.exe
, a file which I don't know where comes from.
我的应用程序只能有一个 APP.EXE
(和某些DLL),但转储保存参考 .ni.dll
和 .ni.exe
。这些文件是无处在我的 .appx
或 .appxsym
文件。
My app only has a App.exe
(and some DLLs), but the dump keeps referring to .ni.dll
and .ni.exe
. These files are nowhere to be found in my .appx
or .appxsym
files.
我的应用程序为每个特定平台(X86,X64和ARM)建成。它是在STACKDUMP坠毁x64版本
My app is built for each specific platform (x86, x64, and ARM). It is the x64 version that crashed in the stackdump.
我现在尝试用WinDbg的:
My current attempts with windbg:
符号路径:
Srv*C:\Users\Vegard\Appdata\local\temp\SymbolCache*http://msdl.microsoft.com/download/symbols`
WinDBG的尝试:
Windbg attempt:
0:006> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
Unable to load image Newtonsoft.Json.ni.dll, Win32 error 0n2
*** WARNING: Unable to verify checksum for Newtonsoft.Json.ni.dll
*** ERROR: Module load completed but symbols could not be loaded for Newtonsoft.Json.ni.dll
Unable to load image App.ni.exe, Win32 error 0n2
*** WARNING: Unable to verify checksum for App.ni.exe
*** ERROR: Module load completed but symbols could not be loaded for App.ni.exe
Unable to load image mscorlib.ni.dll, Win32 error 0n2
*** WARNING: Unable to verify checksum for mscorlib.ni.dll
更新:试图NGEN APP.EXE (充当管理员)我收到以下错误:
Update: Trying to ngen App.exe (running as admin) I get the following error:
> ngen.exe install App.exe
[snip]
This operation is only valid in the context of an app container.
(Exception from HRESULT: 0x8007109A)
什么是在这种情况下,一个应用程序容器? ?半晌后故障排除,并找出通过其他方式的根本原因,我已得出结论:应该在哪里,我从
What is an app container in this case? Where should I run it from?
更新运行我得到了转储文件丢失这些信息。哄能拿调试器加载文件的符号不管。
Update: After a long while troubleshooting, and figuring out the root cause through other means, I have concluded that the minidump file I got was missing this information. No matter of coaxing could get the debugger to load the symbols for the files.
推荐答案
看看该工具的说明 Ngen.exe(本机映像生成):
本机映像生成器(Ngen.exe)是提高管理的应用程序的性能的工具。 Ngen.exe创建本机映像,这是包含编译特定处理器的机器代码的文件,并将它们安装到本地计算机上的本机图像缓存。运行时可以使用本机的图像从缓存中,而不是使用只是在实时(JIT)编译器来编译原装配。
请记住,这特定处理器的机器代码
。
如果你需要,你需要得到的符号(PDBS)对这些图像的图像NI调试转储。对于托管DLL的PDBS将无法正常工作,你需要生成本地PDB与NGEN工具NGEN'd形象,采取对文章的。本文关于如何得到NGEN PDBS为探查报告,但对于调试它是一样的。
If you need to debug minidump with NI images you need to get symbols (PDBs) for these images. The PDBs for managed DLL will not work, you need to generate Native PDB for NGEN'd image with NGEN tool, take a look on the article Creating NGEN PDBs for Profiling Reports. This article about how to get NGEN pdbs for Profiler Report, but for debugging it is the same.
正如我所说记住,NGEN是特定处理器的机器代码
,所以产生PDBS他们
As I said keep in mind that NGEN is a processor-specific machine code
, so to generate PDBs for them:
由于NGEN'd图像是本地人,这是你使用,你是应用程序的体系结构相匹配ngen.exe的重要副本分析(在x86 / x64 / ARM)。例如,如果应用程序在运行64位的Windows 8 RTM那么你就需要引用ngen.exe的副本在C:\Windows\Microsoft.NET\Framework64\v4.0.30319
更新:
从的以上:
如果您远程异形的Windows Store应用,你必须这样做,你的,而你正在运行的分析应用程序的机器上。如果你这样做,你正在查看关于
所以看起来你需要生成NGEN模块/你在哪里得到了转储在同一台机器上PDBS。
So it looks like you need to generate ngen modules / pdbs on the same machine where you got the minidump.
Windows有一个查找Windows如何生成从Windows应用商店的应用程序模块NGEN 。 (只需使用过滤器进程名称与ngen.exe)。
Windows has a Native Image Service, which generates ni images for Windows Store Applications after some time when you install it on your machine. You can try to use procmon.exe to find how Windows generate ngen modules for applications from Windows Store. (just use filter for Process Name with ngen.exe).
这篇关于什么是一个小型转储.ni.dll和.ni.exe文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!