一、引言
今天在使用一个64位程序时遇到一个应用程序无法运行的问题,出现的错误提示如<图1>,同样的32位版本在64位机上运行都木问题,难道64位程序在64位机上还有问题。用depends查了下程序的依赖的动态库,发现缺vc9的动态库,找了个vc的redists库安装了事,可是还是不行。。。。。。折腾了好半天。
木办法,根据提示,google了一下sxstrace,了解到sxstrace是一款强大的程序跟踪工具。可以跟踪到程序运行的很多细节,从而为解决程序出现的问题提供思路。又折腾一会儿,终于熟悉了sxstrace的用法,记录下,方便以后使用。
图 1
二、SxsTrace简介
SxsTrace.exe(SxS程序跟踪工具)是一个可执行性的软件。微软公司的操作系统版本号在6.0.18000之后的操作系统才会包含有此软件,如vista、windows 2008、windows 7等均带有SxsTrace.exe,在此之前的操作系统则没有。是微软PC 操作系统中非常实用的一款程序日志追踪工具。
三、sxstrace的用法
步骤:
1、 启动sxstrace
在windows 7 要用管理员权限才能启动sxstrace,启动命令如下:
sxstrace.exe Trace -logfile:C:\tmp\MySxSTrace.log
<图 2>
2、 运行程序。
在启动sxstrace后,在另外的cmd窗口运行你的程序,如果是非控制台程序,直接运行即可。
<图 3>
3、 转换和查看log
在程序执行完了后,在运行sxstrace的窗口,按提示输入 “Enter”,再运行以下命令:
sxstrace.exe Parse -logfile:C:\tmp\MySxSTrace.log -outfile:C:\tmp\MySxSTrace.txt
用文本编辑工具打开MySxSTrace.txt即可看到问题详细描述。仔细查看原来是vc90的版本不对。
MySxSTrace.txt内容:
=================
开始生成激活上下文。
输入参数:
Flags= 0
ProcessorArchitecture= AMD64
CultureFallBacks= zh-CN;zh-Hans;zh;en-US;en
ManifestPath= C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\setcatenv.exe
AssemblyDirectory= C:\Program Files (x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\
ApplicationConfig File =
-----------------
信息: 正在解析清单文件 C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\setcatenv.exe。
信息: 指令清单定义标识是(null)。
信息: 参考:Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"
信息: 正在解析参考Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 正在解析ProcessorArchitecture amd64 的参考。
信息: 正在解析区域性Neutral 的参考。
信息: 正在应用绑定策略。
信息: 在C:\Windows\WinSxS\manifests\amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4940_none_acd19a1fe1da248a.manifest查找发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT\9.0.30729.4967__1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.DLL上探测指令清单。
信息: 尝试在C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\Microsoft.VC90.CRT.DLL 上探测指令清单。
信息: 尝试在C:\Program Files (x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\Microsoft.VC90.CRT.MANIFEST上探测指令清单。
信息: 尝试在C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\Microsoft.VC90.CRT\Microsoft.VC90.CRT.DLL上探测指令清单。
信息: 尝试在C:\Program Files (x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\Microsoft.VC90.CRT\Microsoft.VC90.CRT.MANIFEST上探测指令清单。
信息: 未找到区域性Neutral 的指令清单。
信息: 结束程序集探测。
错误: 无法解析参考Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
错误: 生成激活上下文失败。
结束生成激活上下文。
4、 安装正确vc版本后跟踪到的信息。
正确启动后MySxSTrace.txt内容:
=================
开始生成激活上下文。
输入参数:
Flags= 0
ProcessorArchitecture= AMD64
CultureFallBacks= zh-CN;zh-Hans;zh;en-US;en
ManifestPath= C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\setcatenv.exe
AssemblyDirectory= C:\Program Files (x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\
ApplicationConfig File =
-----------------
信息: 正在解析清单文件 C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\setcatenv.exe。
信息: 指令清单定义标识是(null)。
信息: 参考: Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"
信息: 正在解析参考Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 正在解析ProcessorArchitecture amd64 的参考。
信息: 正在解析区域性Neutral 的参考。
信息: 正在应用绑定策略。
信息: 在C:\Windows\WinSxS\manifests\amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_acd2fb3be1d90a9f.manifest查找发布服务器策略。
信息: 发布服务器策略重定向的程序集版本。
信息: 发布策略程序集标识是Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 开始程序集探测。
信息: 尝试在C:\Windows\WinSxS\manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_08e58abba83c6451.manifest上探测指令清单。
信息: 在C:\Windows\WinSxS\manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_08e58abba83c6451.manifest上找到指令清单。
信息: 结束程序集探测。
信息: 正在解析参考Microsoft.VC90.CRT.mui,language="*",processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 正在解析ProcessorArchitecture amd64 的参考。
信息: 正在解析区域性 zh-CN的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_zh-CN_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 zh-CN 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性zh-Hans 的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_zh-Hans_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性zh-Hans 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性 zh 的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_zh_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 zh 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性 en-US的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_en-US_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 en-US 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性 en 的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_en_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 en 的指令清单。
信息: 结束程序集探测。
信息: 正在解析清单文件 C:\Windows\WinSxS\manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_08e58abba83c6451.manifest。
信息: 指令清单定义标识是Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 生成激活上下文成功。
结束生成激活上下文。
………
=================
开始生成激活上下文。
输入参数:
Flags= 0
ProcessorArchitecture= AMD64
CultureFallBacks= zh-CN;zh-Hans;zh;en-US;en
ManifestPath= C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\JS0INITENV.dll
AssemblyDirectory= C:\Program Files (x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\
ApplicationConfig File =
-----------------
信息: 正在解析清单文件 C:\Program Files(x86)\thit\TiVue\converter\lib3dx\win_b64\code\bin\JS0INITENV.dll。
信息: 指令清单定义标识是(null)。
信息: 参考:Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"
信息: 正在解析参考Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 正在解析ProcessorArchitecture amd64 的参考。
信息: 正在解析区域性Neutral 的参考。
信息: 正在应用绑定策略。
信息: 在 C:\Windows\WinSxS\manifests\amd64_policy.9.0.microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_acd2fb3be1d90a9f.manifest查找发布服务器策略。
信息: 发布服务器策略重定向的程序集版本。
信息: 发布策略程序集标识是Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 开始程序集探测。
信息: 尝试在C:\Windows\WinSxS\manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_08e58abba83c6451.manifest上探测指令清单。
信息: 在C:\Windows\WinSxS\manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_08e58abba83c6451.manifest上找到指令清单。
信息: 结束程序集探测。
信息: 正在解析参考Microsoft.VC90.CRT.mui,language="*",processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 正在解析 ProcessorArchitectureamd64 的参考。
信息: 正在解析区域性 zh-CN的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_zh-CN_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 zh-CN 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性zh-Hans 的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_zh-Hans_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性zh-Hans 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性 zh 的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_zh_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 zh 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性 en-US的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_en-US_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 en-US 的指令清单。
信息: 结束程序集探测。
信息: 正在解析区域性 en 的参考。
信息: 正在应用绑定策略。
信息: 未找到发布服务器策略。
信息: 未找到绑定策略重定向。
信息: 开始程序集探测。
信息: 未找到 WinSxS 中的程序集。
信息: 尝试在C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT.mui\9.0.30729.4967_en_1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.mui.DLL上探测指令清单。
信息: 未找到区域性 en 的指令清单。
信息: 结束程序集探测。
信息: 正在解析清单文件 C:\Windows\WinSxS\manifests\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.4967_none_08e58abba83c6451.manifest。
信息: 指令清单定义标识是Microsoft.VC90.CRT,processorArchitecture="amd64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.30729.4967"。
信息: 生成激活上下文成功。
结束生成激活上下文。
四、附:如何检查应用程序事件日志中的错误
打开事件查看器:单击“开始”,指向“所有程序”,再指向“管理工具”,然后单击“事件查看器”。
在事件查看器的控制台树中,单击“应用程序”。在详细信息窗格中,确保应用程序事件日志没有报告指出还原未成功的错误。
如果注意到指出错误的任何事件,请双击该事件打开“事件属性”,然后阅读事件描述。
尽可能及时地调查所出现的错误或不一致性,并予以解决。有关所出现错误的详细信息,请单击“描述”框中的 URL,或在 Microsoft 知识库 (http://go.microsoft.com/fwlink/?LinkId=18175) 中搜索相关文章。
检查错误后,关闭事件查看器。
五、总结
六、参考
1、http://technet.microsoft.com/zh-cn/library/aa997769
2、http://www.alarmchang.com/wiki/index.php?title=Sxstrace.exe
推荐本站淘宝优惠价购买喜欢的宝贝:
本文链接:https://hqyman.cn/post/1903.html 非本站原创文章欢迎转载,原创文章需保留本站地址!
休息一下~~