zoukankan      html  css  js  c++  java
  • SxsTrace程序追踪 && 错误信息分析

    先贴错误:应用程序无法运行,并行配置不正确 ,使用命令行sxstrace.exe。百度解决版本

    起因:同事给我一 EXE,然后基于 其进行开发 dll和模块,但是无法加入进程,无法运行。

    SxsTrace使用

    1、程序无法运行, sxstrace.exe进行追踪。

    1、测试本地命令能否成功执行。 cmd 下,任意目录,c:> sxstrace 回车;

    2、转(cd)至程序所在目录,运行命令:SxsTrace Trace -logfile:SxsTrace.etl,启动跟踪;

    3、运行程序(可以命令行运行);回到命令行,点击回车;

    4、继续运行命令:SxsTrace Parse -logfile:SxsTrace.etl -outfile:info.txt,解析跟踪信息为文本;

     信息收集

      • vs2005 debug crt目录: C:Program Files (x86)Microsoft Visual Studio 8VC edistDebug_NonRedistx86
      • 系统运行库目录(Win7 64位) : C:WindowswinsxsManifests
      • Visual Studio 2005正式版的版本号是8.0.50727.42,visual studio 2005 sp1的版本号  8.0.50727.762
      • 在控制面板中,VC2005运行库的情况:Visual c++ 2005 Redistributable 安装版本号分别为 8.0.56366 ,8.0.61000

    ------------------------------------------------------------------

    解析

    对于一个拷贝过来的程序,出现 “程序运行错误,检查并行配置,SxsTrace.exe进行追踪。”

    追踪之后主要内容。
    //重点是下面
     参考是 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。
        定义是 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"。

    =================
    开始生成激活上下文。
    输入参数:
        Flags = 0
        ProcessorArchitecture = Wow32
        CultureFallBacks = zh-CN;zh-Hans;zh;en-US;en
        ManifestPath = C:inindebugyourapp.exe
        AssemblyDirectory = C:inindebug
        Application Config File =
    -----------------
    信息: 正在解析清单文件 C:inindebugyourapp.exe。
        信息: 指令清单定义标识是 (null)。
        信息: 参考: Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
        信息: 参考: Microsoft.VC80.DebugMFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
        信息: 参考: Microsoft.Windows.Common-Controls,language="*",processorArchitecture="x86",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"
        信息: 参考: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
    //······    
    信息: 正在解析清单文件 C:inindebugMicrosoft.VC80.DebugCRT.MANIFEST。
        信息: 指令清单定义标识是 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"。
        错误: 指令清单中找到的组件标识与所请求组件的标识不匹配。
        //重点是下面
        参考是 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。
        定义是 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"。
    错误: 生成激活上下文失败。
    结束生成激活上下文。
    View Code

          通过trace,DebugCRT的版本不对,缺乏相应的CRT(运行库)。参考是指 "exe用的版本",定义指 "系统所有的"。通过几个途径,下载vs 2005 sp1 crt(vc80_8.0.50727.762) 但是感觉下到的都是release版本的。

    其中 vs2005_sp1 crt C:WindowswinsxsManifests 安装之后截图为

      继续trace,结果如下。分析是系统仍然没有找到debug版本的 CRT。debug版本,开发环境是需要的,想到了 vs2005 sp补丁。
    下载之后,sp1

    =================
    开始生成激活上下文。
    输入参数:
        Flags = 0
        ProcessorArchitecture = Wow32
        CultureFallBacks = zh-CN;zh-Hans;zh;en-US;en
        ManifestPath = C:inindebugswcapp.exe
        AssemblyDirectory = C:inindebug
        Application Config File =
    -----------------
    信息: 正在解析清单文件 C:inindebugswcapp.exe。
        信息: 指令清单定义标识是 (null)。
        信息: 参考: Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
        信息: 参考: Microsoft.VC80.DebugMFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
        信息: 参考: Microsoft.Windows.Common-Controls,language="*",processorArchitecture="x86",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"
        信息: 参考: Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"
    信息: 正在解析参考 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。
        ·······
        信息: 正在解析 ProcessorArchitecture x86 的参考。
            信息: 正在解析区域性 Neutral 的参考。
                信息: 正在应用绑定策略。
                    信息: 在 C:windowsWinSxSmanifestsx86_policy.8.0.microsoft.vc80.debugcrt_1fc8b3b9a1e18e3b_8.0.50727.42_none_3825408a574a21cb.manifest 查找发布服务器策略。
                    信息: 未找到绑定策略重定向。
                信息: 开始程序集探测。
                    信息: 未找到 WinSxS 中的程序集。
                    信息: 尝试在 C:windowsassemblyGAC_32Microsoft.VC80.DebugCRT8.0.50727.762__1fc8b3b9a1e18e3bMicrosoft.VC80.DebugCRT.DLL 上探测指令清单。
                    信息: 尝试在 C:inindebugMicrosoft.VC80.DebugCRT.DLL 上探测指令清单。
                    信息: 尝试在 C:inindebugMicrosoft.VC80.DebugCRT.MANIFEST 上探测指令清单。
                    信息: 尝试在 C:inindebugMicrosoft.VC80.DebugCRTMicrosoft.VC80.DebugCRT.DLL 上探测指令清单。
                    信息: 尝试在 C:inindebugMicrosoft.VC80.DebugCRTMicrosoft.VC80.DebugCRT.MANIFEST 上探测指令清单。
                    信息: 未找到区域性 Neutral 的指令清单。
                信息: 结束程序集探测。
        错误: 无法解析参考 Microsoft.VC80.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762"。
    错误: 生成激活上下文失败。
    结束生成激活上下文。
    View Code


      打补丁 vs2005 sp1(大小 约431M),C:WindowswinsxsManifests 截图

      同时 C:Program Files (x86)Microsoft Visual Studio 8VC edistDebug_NonRedistx86Microsoft.VC80.DebugCRTMicrosoft.VC80.DebugCRT.manifest
    详细为 version="8.0.50727.762" 之前为  version="8.0.50727.42"

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
        <noInheritable></noInheritable>
        <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50727.762" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
        <file name="msvcr80d.dll" hash="9062fecdbc9ab7df4d66e81b37e9cecdee037430" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>g5HUX4P7M3mkZuWgfND7EdkmVgs=</dsig:DigestValue></asmv2:hash></file>
        <file name="msvcp80d.dll" hash="cf233a4bb28335cd6b4f62b5947d119faefa5bcb" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>lGYgPP6K9l5G0HBKTJ/Rlj2Vybg=</dsig:DigestValue></asmv2:hash></file>
        <file name="msvcm80d.dll" hash="47021cd154192d51aad190daed426bf47156fa40" hashalg="SHA1"><asmv2:hash xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"><dsig:Transforms><dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity"></dsig:Transform></dsig:Transforms><dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></dsig:DigestMethod><dsig:DigestValue>1fLI6D1TNH6Hwc1D/toIuhn/R+4=</dsig:DigestValue></asmv2:hash></file>
    </assembly>
    View Code


    -------------------------------------------------------------------------------------------------------
    解析成功之后的SxsTrace

    =================
    开始生成激活上下文。
    输入参数:
        Flags = 0
        ProcessorArchitecture = Wow32
        CultureFallBacks = zh-CN;zh-Hans;zh;en-US;en
        ManifestPath = C:inindebugyourapp.exe
        AssemblyDirectory = C:inindebug
        Application Config File =
    -----------------
    信息: 正在解析清单文件 C:inindebugyourapp.exe。
        信息: 指令清单定义标识是 (null)。
        信息: 参考: Microsoft.Windows.Common-Controls,language="&#x2a;",processorArchitecture="x86",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"
    信息: 正在解析参考 Microsoft.Windows.Common-Controls,language="&#x2a;",processorArchitecture="x86",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.0.0"。
        信息: 正在解析 ProcessorArchitecture WOW64 的参考。
        ·······
        信息: 正在解析 ProcessorArchitecture x86 的参考。
            信息: 正在解析区域性 zh-CN 的参考。
                信息: 正在应用绑定策略。
                    信息: 自动服务策略重定向的程序集版本。
                    信息: 发布策略程序集标识是 Microsoft.Windows.Common-Controls.Resources,language="zh-CN",processorArchitecture="x86",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.7600.16385"。
                信息: 开始程序集探测。
                    信息: 尝试在 C:windowsWinSxSmanifestsx86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.7600.16385_zh-cn_b7a33d2d3f47b7fb.manifest 上探测指令清单。
                    信息: 在 C:windowsWinSxSmanifestsx86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.7600.16385_zh-cn_b7a33d2d3f47b7fb.manifest 上找到指令清单。
                信息: 结束程序集探测。
    信息: 正在解析清单文件 C:windowsWinSxSmanifestsx86_microsoft.windows.c..-controls.resources_6595b64144ccf1df_6.0.7600.16385_zh-cn_b7a33d2d3f47b7fb.manifest。
        信息: 指令清单定义标识是 Microsoft.Windows.Common-Controls.Resources,language="zh-CN",processorArchitecture="x86",publicKeyToken="6595b64144ccf1df",type="win32",version="6.0.7600.16385"。
    信息: 生成激活上下文成功。//成功!
    结束生成激活上下文。
    View Code

    =================
    总析:
    sxstrace追踪,结果分析。
    开发人员 如果发debug给parter(or 测试机),尽量附带相应的 debugcrt;或者保持两者环境相同。
    但 你要是将debug版本发布成品,那。。。

        
    ===================================================

    写在2018.1

    W2A_CP 和 A2W_CP 引发 语法错误 C2143.  分号之前缺少 ')'。

    VS2005 Sp1补丁包:修复了 atlconv.h中 atl W2A_CP macro的  ‘)’的缺失问题

    修复前后diff区别

     

     

     

  • 相关阅读:
    奇异值分解(SVD)详解及其应用
    注意力机制最新综述解读
    双目立体视觉的数学原理
    区域生长算法原理及MATLAB实现
    “error LNK2019: 无法解析的外部符号”的几种可能原因
    3D Slicer Adding MRML
    3D Slicer CreateModels-Module Analysis
    3D Slicer 结构的实例分析IGSReader
    3D Slicer VS-Qt5VSaddin-qt4.8.7dev
    3D Slicer Debug or Dev-170918
  • 原文地址:https://www.cnblogs.com/Bachelor/p/4661899.html
Copyright © 2011-2022 走看看