Visual Studio 调试器,无限制或不同类型地解释内存?

Visual Studio Debugger, interpreting memory without bound or as different types?

我希望通过学习如何更快、更清晰地检查值来改进我的调试工作流程,但我遇到了一个大问题。

Visual Studio 的 C++ 调试器对我的记忆做出了一些并不总是正确的假设:

例如,我可能希望将 float value 视为 0x3f800000 而不是 1.0f,因为将 0x0000803f 而不是 4.60060298822e-41 视为更容易看到自然存在字节序编码问题。

或者在标记化时,我想查看尽可能多的字符,不以 NULL 结束打印输出,甚至可能查看此地址的前面。

可以使用array, 23array中打印出23个字符,但这是我能找到的唯一QoL特征,你必须为变量做一个书签, 所以它最终变得非常笨重。

是否有任何我错过的设置、扩展或功能可以提高我以 Visual Studio 可能无法为我预测的方式查看内存的能力?

这里问题较多,如有遗漏请见谅

对于类型,Visual Studio的Watchwindow可以投。例如,如果您有

float f = 1.23;

您可以通过列出其名称将其视为浮动,或者您可以强制转换:

*(int*)&f   0x3f9d70a4  int

对于字符串(并寻找变量周围的内存),我建议使用 Memory 视图 (Debug -> Windows -> Memory),您可以使用其中的四个视图同时查看不同的位置。或者在具有不同格式的相同位置。你可以把你的变量的地址放在那里和一些数学(- some value)。您可以查看 1、2、4 或 8 字节值、十六进制或十进制、ANSI 或 Unicode 等。哦,是的 - 您可以滚动很远。

对于更复杂的类型,您可以使用natvis