【问题标题】:How to print long string in actions of break points in Visual Studio?如何在 Visual Studio 中的断点操作中打印长字符串?
【发布时间】:2017-09-15 06:01:54
【问题描述】:

我编写这个演示程序只是为了解释我的问题。它没有做任何有用的事情:

#include <string>

int main(void)
{
    std::string strMsg = "This is a very very long message, long enough that Visual Studio can't output it entirely. If you don't believe, just try it yourself and you'll see. What? I'm not long enough? Now it will be enough. You'll see ellipses at the end.";
    return 0;
}

然后我在return 0; 处添加一个断点,并将strMsg 打印到输出窗口

打印出来的字符串如下:

strMsg = "这是一条很长很长的消息,长到Visual Studio无法完全输出。不信你自己试试看就知道了。什么?我不长够了吗?现在就够了。...

请注意打印消息末尾的...。这是因为字符串太长,无法完整打印。

有什么办法可以解决这个问题,让 Visual Studio 可以打印整个字符串?

【问题讨论】:

  • 在您的实际情况下这可能不是您的选择,但只是出于兴趣:如果您在字符串中插入换行符会发生什么?
  • @Jeremy 你的意思是\n?字符将按原样打印,例如"abc\n" 将打印为abc\n

标签: c++ visual-studio visual-studio-2015 breakpoints


【解决方案1】:

您可以通过在行上放置一个断点然后选择变量名称来检查字符串的完整值。然后您应该会看到一个小的下拉列表,允许您以文本、xml 等形式查看。这允许您使用文本可视化器。

在实时代码中,您要么需要使用printfcout 将值打印到控制台,要么打印到文件或日志。

【讨论】:

  • 确实如此。但有时我需要程序在遇到断点时继续执行(不暂停)。例如,对于一些时间敏感的场合。
  • 你真的应该使用一些日志框架。打印到控制台会降低您的应用程序的速度,尤其是在时间要求严格的代码中。
  • 你可能是对的。但是日志不能涵盖所有情况/变量,有时我仍然需要使用将消息记录到输出窗口
  • @MartinZhai 为什么不能呢?实际上,这正是日志记录的用途
  • @bolov 在一个巨大的项目(几百万行代码)中添加完整的日志需要太多的努力..
猜你喜欢
  • 1970-01-01
  • 2011-01-13
  • 2018-06-13
  • 2020-01-31
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多