【问题标题】:C++/WinRT natvis doesn't work in fresh installC++/WinRT natvis 在全新安装中不起作用
【发布时间】:2020-12-04 06:00:46
【问题描述】:

我该如何解决这个问题?

我将this question 中的 natvis 示例与 C++/WinRT 控制台模板相结合,并成功使Matrix2d 的 natvis 工作但Uri 不工作。

#include "pch.h"

using namespace winrt;
using namespace Windows::Foundation;

struct Matrix2d
{
    Matrix2d(int r, int c) : m_numRows(r), m_numCols(c), m_elements(r* c, 0) {}
    // Column first ordered elements
    std::vector<int> m_elements;
    int m_numRows;
    int m_numCols;
};


int main()
{
    init_apartment();
    Uri uri(L"http://aka.ms/cppwinrt");
    Matrix2d g(4, 3);

    printf("Hello, %ls!\n", uri.AbsoluteUri().c_str());
}

我不确定 cppwinrt 预计会生成哪些 natvis 文件(.natvis 或 .pdb)以及它们的位置。

下面是 Natvis 调试输出。它显示只有我的自定义 Natvis 文件 (\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis) 和系统范围的 Natvis 文件 (%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers) 正在加载。

Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\atlmfc.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\concurrency.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\cpp_rest.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\ObjectiveC.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\Windows.Data.Json.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.geolocation.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.sensors.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.media.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.natvis。 Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\winrt.natvis。 Natvis:解析 natvis xml 文件:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis。 Natvis:忽略来自 ConsoleApplication2.pdb 的 NatvisFile.natvis;加载的项目中已存在同名文件。 Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(17,6):在类型上下文“Matrix2d”中成功解析表达式“0”。 Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(18,6):在类型上下文“Matrix2d”中成功解析表达式“i ' 中。 Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1062,6):成功解析表达式'_Mypair._Myval2._Mylast - _Mypair._Myval2。 _Myfirst' 在类型上下文 'std::vector' 中。 Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1064,29):在类型上下文“std”中成功解析表达式“size()”: :vector'。 Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1066,52):在类型上下文“std”中成功解析表达式“容量()”: :vector'。 Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1067,53):在类型上下文“std::vector”中成功解析表达式“_Mypair” '。 Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1069,15):在类型上下文“std”中成功解析表达式“size()”: :vector'。 Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1070,23):在类型上下文中成功解析表达式 '_Mypair._Myval2._Myfirst' std::vector'。 Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,23):在类型上下文 'Matrix2d' 中成功解析表达式 '&m_elements[i * m_numCols],[m_numCols]na'。 Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,8):在类型上下文“Matrix2d”中成功解析表达式“i”。 Natvis: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12): 成功解析类型上下文 'Matrix2d' 中的表达式 '++i'。

这是全新安装的 Windows 10 和 VS19 (16.8.2)。

【问题讨论】:

    标签: visual-studio visual-studio-2019 natvis cppwinrt


    【解决方案1】:

    看起来 cppwinrt 团队已经从 vsix 插件中移除了 Visualizer:

    从 vsix #792 中移除 Visualizer - https://github.com/microsoft/cppwinrt/pull/792

    我不知道他们为什么决定移除 Visualizer,但我设法让 Visualizer 再次工作

    1. https://github.com/microsoft/cppwinrt下载cppwinrt项目
    2. 恢复在https://github.com/microsoft/cppwinrt/pull/792/commits/8a945371b26d3f1ed1a105e8ebb1e3c0e90a54bd 指定的所有更改 (基本上 3 个文件 build_vsix.cmd、source.extension.vsixmanifest 和 vsix.csproj)
    3. 将“call .nuget\nuget.exe restore vsix\vsix.sln”添加到“build_vsix.cmd”,否则在第4步时出现错误,提示缺少某些nuget包。
    4. 使用 2019 开发人员提示使用文件“build_vsix.cmd”创建。
    5. 删除当前的 C++/WinRT 插件并安装创建的插件(位于 ./vsix/bin/x86/Release/ )

    【讨论】:

      猜你喜欢
      • 2016-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 2020-07-18
      相关资源
      最近更新 更多