如何调试清单错误?

时间:2010-04-15 13:31:48

标签: debugging manifest

我正在创建一个依赖于第三方库的应用程序,而第三方库又依赖于MSVCP90D.dll。在运行应用程序时,它无法启动并提供错误消息:

alt text http://i39.tinypic.com/dn0ihf.jpg

我在C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\amd64\Microsoft.VC90.DebugCRTC:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86\Microsoft.VC90.DebugCRT找到了这样的图书馆。如您所见,其中一个是64位,而另一个是32位。当我将64位放入应用程序的目录时,应用程序在加载时会静默崩溃(从Visual Studio输出窗口的日志如下所示)。使用32位,我收到另一条错误消息:

alt text http://i43.tinypic.com/33azzoj.jpg

如果我按Abort - 程序关闭,Retry会导致进入crt0msg.c文件的调试会话。这是系统文件,我不知道如何调试它。如果我按下忽略,我会收到另一条错误消息:

alt text http://i39.tinypic.com/vhf4ia.jpg

所以问题是如何调试此类错误?请给我一些链接,我可以在其中阅读更多相关内容或指出我在这种情况下应该做些什么。我知道这与明显的问题有关,因此,如果您知道任何问题,请给我一个良好资源的链接,详细描述清单,因为到目前为止我发现的只是让我感到困惑。

我使用的是Windows 7 64位,Visual Studio 2008版本9.0.30729.4108 QFE。

这是64位版本的MSVCP90D.dll库的日志:

'chrome.exe': Loaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\chromium-xml3d-rtsg2\chrome.exe', Symbols loaded.
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\winmm.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\psapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\chromium-xml3d-rtsg2\chrome.dll', Symbols loaded.
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\comctl32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\oleacc.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\opengl32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\glu32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ddraw.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\dciman32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'C:\Windows\SysWOW64\secur32.dll', Symbols loaded (source information stripped).
'chrome.exe': Loaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\rtsg2\bin\RTSG2.dll', Symbols loaded.
'chrome.exe': Unloaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\chromium-xml3d-rtsg2\chrome.dll'
'chrome.exe': Unloaded 'D:\Projects\Chromium\devenv\install\build-msvc-debug\rtsg2\bin\RTSG2.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\secur32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\opengl32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\ddraw.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\dwmapi.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\setupapi.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\devobj.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\cfgmgr32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\dciman32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\glu32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\oleacc.dll'
'chrome.exe': Unloaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\comctl32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\oleaut32.dll'
'chrome.exe': Unloaded 'C:\Windows\SysWOW64\ole32.dll'
'chrome.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Symbols loaded (source information stripped).
The program '[1152] chrome.exe: Native' has exited with code 9 (0x9).

1 个答案:

答案 0 :(得分:8)

在研究了一些在线资源后,我自己找到了解决方案。所以清单必须嵌入到每个需要依次加载一些外部库的应用程序和依赖库中。在我的情况下,我使用的第三方库没有包含这样的清单。我已手动包含一个,这解决了问题。

我用于调试此问题的工具是Resource HackerDependency Walker和一些在线手册,包括StackOverflow上的其他问题:

希望这对某些人有用。