3

有什么方法可以改变 Visual Studio 调试器的默认行为,这样当悬停在一个以 null 结尾的、动态分配的字符数组 (C++) 上时,它将显示字符串的全部内容,而不是仅显示第一个字符?

我应该提到我正在使用 Visual Studio 2010。如果只有在 VS2012 中可以实现这一点,我也很想知道这一点!

4

1 回答 1

3

Visual Studio 有一个有用的链接,C++ 调试器提示

要将指针表达式解释为字符串,可以使用 ',s' 表示简单的以 null 结尾的字符串,使用 ',s8' 表示 UTF-8 字符串,或使用 ',su' 表示 Unicode 字符串。(请注意,表达式必须是指针类型才能工作)。

例如,您打破以下功能

void function(char* s)
{
   // break here
}

在 MSVC监视窗口(或调试器)中,您将首先尝试添加s,但它只会显示第一个字符。但是有了上述信息,您可以在监视窗口中的变量中附加以下后缀:

s,s8

或者如果您知道它是 unicode,请尝试:

s,su

这甚至适用于任意指针,或者说适用于其他数据类型,例如调试 a 的内容QString

QString str("Test");
// break here

为此,可能的监视窗口(或调试器)语句是:

((str).d)->array,su                 <-- debug QString (Qt4) as unicode char string
(char*)str.d + str.d->offset,su     <-- debug QString (Qt5) as unicode char string
0x0c5eae82,su                       <-- debug any memory location as unicode char string

如果附加,s8or 分别,su不起作用,请尝试其他变体。

于 2016-05-18T07:57:39.120 回答