Visual Studio - 发布模式下无效的std::string调试器输出

3

alt text

这个程序并没有什么花哨的东西,但输出结果却是垃圾。以下是我包含的头文件,以防相关。
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <vector>
#include <string>
#include <sstream>

我正在使用Windows XP上的Visual Studio 2008。

请注意,如果我将字符串打印到stdout,它会完美地打印出"test"。

1个回答

4
有时候在Release模式下编译,调试器可能会难以获取正确的值。编译器可能会交换操作或将值移动到寄存器中等。

有没有一种方法可以显示实际值(例如字符串),而不是打印它?也许可以使用监视窗口? - Pavel K
@PavelK 不,观察窗口使用相同的机制来查找值。唯一的方法是切换到调试构建或降级到汇编语言以查看优化代码。 - Mark Ransom
这个问题在调试版本中也会出现,而且非常普遍,尽管关于这个问题的信息很少。 - Florian Winter
根据我的经验,@FlorianWinter并不是这样的。 - Mark Ransom

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接