我有一个依赖于通过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工具的更改日志,概述最近对其进行了哪些更改,或者可以发现上述问题吗?
答案 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
不支持。