“natvis”是“native Visualizer”的缩写。由非托管调试引擎用于提供本机对象的自定义视图。该.natvisreload
命令是只有非托管调试引擎才能理解的命令。从评论中可以看出这是如何出错的:
当您使用 File > Open > File 打开使用托管代码的进程的小型转储时,您看到的 slug 示例。请注意右上角的 3 个选项以开始调试。“Managed Only”仅启用托管调试引擎,“Native Only”用于非托管引擎,“Mixed”启用两者。
您使用了“混合”。虽然这会启用两个引擎,但同时只能有一个处于活动状态。不幸的是,哪个特定的人在控制并不总是很明显。除了能够显示源代码的调试器。还有一个副作用,就像您在这里发现的那样,“.natvisreload”命令会变成“嗯?” 因为这不是托管调试引擎理解的命令。
因此,一种解决方法是使用“仅本机”。
但是,您可以即时在引擎之间切换。这通常在调试器停在断点上时自动发生。不是转储调试的选项。不直观的其他方法是使用 Debug > Windows > Call Stack 调试器窗口。在混合模式调试中,您会在堆栈中看到托管和非托管堆栈帧,从底部的 RtlUserThreadStart 开始。双击这些框架之一,例如底部的框架,调试器会切换引擎。请注意,您不一定有值得一看的东西,特别是如果这是一个托管程序,并且您只会获得本机代码的机器代码转储。然而,“.natvisreload”命令现在将按预期工作。