C++ 从用户模式应用程序使用WPP

C++ 从用户模式应用程序使用WPP,c++,visual-studio,logging,etw,C++,Visual Studio,Logging,Etw,我尝试在用户模式下使用WPP,成功地在VS10中使用它,通过添加到项目文件来释放目标: <PropertyGroup><WdkDir>c:\work\Proj\wppTest\DDK\</WdkDir><MyTargetsDir>c:\work\Proj\wppTest</MyTargetsDir> </PropertyGroup> ... <ImportGroup Label="ExtensionT

我尝试在用户模式下使用WPP,成功地在VS10中使用它,通过添加到项目文件来释放目标:

    <PropertyGroup><WdkDir>c:\work\Proj\wppTest\DDK\</WdkDir><MyTargetsDir>c:\work\Proj\wppTest</MyTargetsDir>  </PropertyGroup>

...

  <ImportGroup Label="ExtensionTargets">
    <Import Project="$(MyTargetsDir)\Wpp.targets" />
  </ImportGroup>

有人知道为什么它可以在发布模式下工作,但不能在调试模式下工作吗?

找到了它不能在调试模式下编译的原因。我设置了/ZI编译器标志(),它希望用于编译的/ZI格式能够在调试中工作。

是的,问题是当使用“支持编辑并继续的PDB中的调试符号”进行编译时,编译器不会解析_u行_u宏

如果从Application_Test.cpp第51行进行跟踪,则WPP编译器将定义一个函数WPP_CALL_Application_Test_cpp51,并使用uuu FILE_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
      <ExtensionsToDeleteOnClean>$(ExtensionsToDeleteOnClean);*.tmh</ExtensionsToDeleteOnClean>
  </PropertyGroup>
  <ItemGroup>
      <CoreCppClean Include="@(CoreCppClean);$(ProjectDir)">
          <FilePatternsToDelete>*.tmh</FilePatternsToDelete>
     </CoreCppClean>
  </ItemGroup>
  <ItemGroup>
    <TraceWppSources Include="@(ClCompile)" Exclude="stdafx.cpp" />
  </ItemGroup>
  <Target Name="TraceWpp" BeforeTargets="ClCompile" Inputs="@(TraceWppSources)" Outputs="@(TraceWppSources -> '%(Filename).tmh')">
    <Exec Command="cd $(ProjectDir)" />
    <Message Importance="high" Text="Creating tmh"/>
    <Exec Command="$(WdkDir)\bin\x86\tracewpp.EXE -cfgdir:$(WdkDir)\bin\wppconfig\rev1 -odir:. @(TraceWppSources, ' ')" />
    <Message Importance="high" Text="tmh created"/>
  </Target>
</Project>
#pragma once

#define WPP_CONTROL_GUIDS \
    WPP_DEFINE_CONTROL_GUID(CtlGuid,(28EE579B, CF67, 43b6, 9D19, 8930E7AAA131),  \
                                                                            \
        WPP_DEFINE_BIT(TRACE_ERROR)                                   \
        WPP_DEFINE_BIT(TRACE_WARNING)                                   \
        WPP_DEFINE_BIT(TRACE_INFO1)                                   \
        WPP_DEFINE_BIT(TRACE_INFO2)                                   \
        )