【问题标题】:Why strings are shown partially in the Visual Studio 2008 debugger?为什么字符串在 Visual Studio 2008 调试器中部分显示?
【发布时间】:2025-12-28 21:35:17
【问题描述】:

我正在使用 VS2008 调试 C++ 应用程序,并且由于一些长选择查询,我无法在调试器中看到全文。它只显示查询的一部分。

有没有办法查看全文?

提前致谢。

编辑:字符串中可用的真正查询是:

select  c.cd_seq, m.diag_code, m.diag_descr, 'S' as source 
from custom_booking_data c 
left outer join meddiagnosis m 
on c.cd_number_value = convert( decimal( 28, 8 ), m.diag_urn ) 
where c.custom_data_urn = 4 and c.cd_field = 433 
union 
select  c.cd_seq, m.diag_code, m.diag_descr, 'H' as source 
from custom_booking_data c 
left outer join ordiagnosis m 
on c.cd_number_value = convert( decimal( 28, 8 ), m.diag_urn ) 
where c.custom_data_urn = 4 and c.cd_field = 594

如果你问我,不会那么久。

【问题讨论】:

  • 我们在这里谈了多久?我查看过 10,000-20,000 个字符长且没有截断的内容。在您的情况下,它看起来像是在 ATL::CString 中。有正确的长度吗?也许字符串实际上被截断了。
  • 点击文本可视化图标,看起来像一个望远镜。如果仍然剪辑,请务必考虑简化您的查询。
  • 这里与 VS2015 更新 1 相同:字符串被截断为 32768(或更具体地说:前 16382 个字符后跟“...”,然后是最后 16383 个字符)。有什么解决办法吗?
  • @D.R. - 我也遇到过同样的32768字符问题,也是用VS2015.1。可以使用new string(' ', 32769) 轻松复制。我环顾四周,没有发现任何其他提到这一点的问题。 Visual Studio 2013 可以很好地显示整个字符串。
  • 有趣的更新:VS 2015 没有问题 -> VS 2015 Update 1 引入了问题。解决方法:File.WriteAllText(@"C:\Temp\temp.txt", str) 在即时窗口中。

标签: visual-studio-2008 string debugging


【解决方案1】:

悬停您要查看的变量,然后点击放大镜图标下面的图标,或选择图标右侧的箭头并从下拉菜单中选择文本

这是结果,我想你问过这个......

【讨论】:

  • 确实,对于长度超过 32768 个字符的字符串没有帮助。
  • 看来VS2015可以在这个表单上显示超过32K的字符。仍然应该有一个限制,但至少比那个高。
  • 在 VisualStudio 2017 中似乎有超过 100 万个字符 (char) 的限制。
【解决方案2】:

这似乎是 Visual Studio 中的一个“功能”。我在使用 C# 的 VS2012 中看到了同样的情况,字符串刚刚超过 500 个字符。

我找到的解决方案是右键单击调试器中的变量并对其进行“快速观察”。字符串在 Quick Watch 窗口中不会被截断。

【讨论】:

  • 对长度超过 32768 个字符的字符串没有帮助。
【解决方案3】:

可能是您的字符串包含 NUL '\0' 值吗?调试器使用的文本框控件会将它们解释为字符串的结尾。

【讨论】:

  • 不,我检查过了,但查询在工作工会中间被破坏了 select "union sele"
【解决方案4】:

这是在评论中,但确实是我正在寻找的答案:File.WriteAllText(@"C:\Temp\temp.txt", str)

【讨论】:

  • 这不适用于 c++?至少在 VS 2019 中不会
【解决方案5】:

我认为您可以右键单击该项目,然后“复制到剪贴板”。然后将其粘贴到另一个文本编辑器中。

【讨论】:

  • 不,该值也被部分复制了。
  • 在调试器中右键项目,不要从文本框中复制文本,那就来不及了!
  • 我从所有可能的地方复制了它,结果总是被截断的字符串。
  • 可以确认,对于 VS2015 - 长度超过 32768 个字符的字符串会被删减(见问题评论)。
  • 我正在寻找一种解决方法,因此选择整个对象示例:{content: "too long..."} 就可以了。干杯!
最近更新 更多