Visual C ++调试器未显示返回值

时间:2017-03-28 21:20:19

标签: c++ visual-studio visual-studio-debugging debug-symbols

当我通过以下程序单步使用Visual Studio调试器时," auto"中没有显示返回值。任何istringstream方法调用的窗口。

它显示了vector::size()的返回值。

#include "stdafx.h"
#include <sstream>
#include <vector>

int main()
{
    std::vector<char>{}.size();      //<-- debugger shows return value
    std::istringstream{"x"}.get();   //<-- no return value shown
    std::istringstream{"x"}.good();  //<-- no return value shown
    std::istringstream{"x"}.tellg(); //<-- no return value shown
    return 0;
}

当然我在&#34; debug&#34;配置,因此编译器不应该能够优化呼叫。我使用控制台应用程序向导创建了项目,之后没有更改任何项目设置。

我应该提交错误吗?

修改

另一个可能相关的问题:我不能 F11 -step进入上述任何istringstream方法。调试器只是跨过它们就像我按下了F10一样。同样,它适用于vector::size()

1 个答案:

答案 0 :(得分:0)

事实证明,在动态链接到VC ++运行时时,这是一个缺少调试符号的问题。例如,在默认安装Visual Studio 2017之后,VC ++运行时的调试符号不可用。

可能的解决方案:

  • 静态链接到VC ++ Runtime(项目属性&gt; C / C ++&gt;代码生成&gt;运行时库:多线程调试)
  • 启用Microsoft符号服务器(其他&gt;选项&gt;调试&gt;符号&gt;检查“Microsoft Symbol Server”并在下面的编辑控件中输入用于存储符号的目录)

我认为std::vector没有出现这个问题,因为它只是标题,因此代码会直接链接到程序可执行文件中。对于C ++流库,大部分代码实际上都在VC运行时DLL中。