Windows SDK版本10.0.15063.0和10.0.17134.0之间tracewpp的行为更改

时间:2019-03-22 08:19:26

标签: visual-studio visual-studio-2017 visual-studio-2017-build-tools

我有一个依赖于通过wpp框架进行用户模式跟踪的应用程序。但是,Microsoft在Windows SDK的最新版本中引入了一些更改,这些更改以某种方式破坏了tracewpp.exe工具。我看到的实际问题如下:

  

&“ C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.15063.0 \ x64 \ tracewpp.exe” ...更多args ...

按预期工作(我已经检查了SDK的较低版本,直到8.0,都很不错)。

但是,当我尝试使用更新版本的SDK执行相同的构建时,该构建因一个相当神秘的错误而中断:

  

&“ C:\ Program Files(x86)\ Windows Kits \ 10 \ bin \ 10.0.17134.0 \ x64 \ tracewpp.exe” ...所有相同的参数...

结果:

  

provider.tpl(0):错误wpp:(Template :: DoId)找不到变量:提供程序   tracewpp(0):错误wpp:(RealMain)致命错误:模板解析错误

有问题的模板最初来自这里:https://github.com/antoxar/WPPTracingSample/blob/master/sample/WppTracing/WppConfig/Rev1/provider.tpl

有人可以指出我tracewpp.exe工具的更改日志,概述最近对其进行了哪些更改,或者可以发现上述问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题并解决了。就我而言,Microsoft Visual Studio 2017使用的是10.0.17763.0 SDK,并在以下位置运行WPP工具:

WindowsSdkVerBinPath=C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\

但是我的tracewpp命令引用了一个较旧的“ WppConfig \ Rev1”目录。较新的工具期望使用不同的provider.tpl配置。我安装了这些不同的版本,并且是指较旧的版本(最后一个),而不是匹配的“ 17763”版本。

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\WppConfig\Rev1
C:\Program Files (x86)\Windows Kits\10\bin\WppConfig\Rev1

如果在Visual Stdio中使用“预构建”步骤,则将路径从$(WindowsSdkDir)更改为$(WDKBinRoot)对我来说是可行的(您的其他选项可能有所不同):

 tracewpp -I"$(WDKBinRoot)\WppConfig\Rev1" -odir:$(IntDir) -scan:Trace.h *.cpp

顺便说一句,我的项目的Debug构建也失败了。如果要调试符号而不是/Zi,请确保使用编译器标志/Zl (Debug with Edit and Continue)wpptrace不支持。