一、引言
今天在使用一個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