我该如何解决这个问题?
我将这个问题中的 natvis 示例与 C++/WinRT 控制台模板结合起来,并成功地使 natvisMatrix2d
可以工作,但不能用于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 < m_numRows”。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1063,6):在类型上下文“std::vector<int,std::allocator >”中成功解析表达式“_Mypair._Myval2._Myend - _Mypair._Myval2._Myfirst”。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<int,std::allocator >' 中。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1064,29):在类型上下文“std”中成功解析表达式“size()”: :vector<int,std::allocator >'。Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1066,52): 成功解析表达式' 类型上下文'std::vector<int,std::allocator >'中的容量()'。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1067,53):在类型上下文“std::vector”中成功解析表达式“_Mypair” <int,std::分配器>'。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1069,15):在类型上下文“std”中成功解析表达式“size()”: :vector<int,std::allocator >'。Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1070,23):在类型上下文中成功解析表达式 '_Mypair._Myval2._Myfirst' std::vector<int,std::allocator >'。纳特维斯: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'。成功解析类型上下文“Matrix2d”中的表达式“i”。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12):在类型上下文“Matrix2d”中成功解析表达式“++i”。成功解析类型上下文“Matrix2d”中的表达式“i”。Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12):在类型上下文“Matrix2d”中成功解析表达式“++i”。
这是全新安装的 Windows 10 和 VS19 (16.8.2)。