• 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区别

     

     

     

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/Bachelor/p/4661899.html
Copyright © 2020-2023  润新知