c++ - 查看字符串变量时,调试器显示 npos=4294967295

标签 c++ visual-studio debugging visual-studio-2015

我的问题基本上是,每当我使用 Visual Studio(Windows 10 计算机上的 2015 社区版)进行调试时,当我尝试将鼠标悬停在变量上或查看调试 View 的本地或自动部分中的变量时,我不知道看不到变量中保存的实际数据。

这是我在字符串和 vector 中都遇到过的问题。对于字符串,它将显示npos=4294967295

如果您继续单击下拉箭头,您最终将看到保存在该变量中的实际字符串;只有在深入研究变量的内部结构之后,例如 std::_String_alloc_Mypair_Myval 等。 vector 也是如此。

有人遇到过这个问题或者知道如何解决吗?

最佳答案

我也遇到了同样的问题。我假设您正在调试一个非托管( native )C++ DLL,它是使用托管 EXE 的解决方案的一部分?就我而言,我有一个 C# WPF EXE,它在非托管 C++ DLL 中调用 PInvokes 函数。

对我的案例有效的“修复”:

修复 1:在调试器设置中取消选中“使用托管兼容模式”: 您可以在“工具/选项/调试/常规”中执行此操作。请参阅:https://stackoverflow.com/a/33462362/5556801有关什么是“托管兼容性模式”以及为什么通常希望不选中它的一些讨论,请参阅:http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/16/switching-to-managed-compatibility-mode-in-visual-studio-2013.aspx

“修复”2: 作为部分解决方法,您可以首先在没有调试器的情况下启动进程 (Ctrl+F5),然后将 VS2015 调试器附加到您的进程(调试/附加到进程),但仅选择“ native 代码”和“附加”到/选择...”按钮。现在,当您的 native C++ DLL 中的断点被击中时,您可以将鼠标悬停在 std::string 变量上,VS2015 将按预期显示其完整内容,包括其数据成员。这种仅使用 native 代码的解决方法的缺点是您无法同时调试托管代码(例如 C# 或 CppCli)。

关于c++ - 查看字符串变量时,调试器显示 npos=4294967295,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33635030/

相关文章:

python - 错误设置 django 的 ALLOWED_HOSTS 设置不会产生可理解的错误

c++ - 使用位图的sdl c++键盘输入

javascript - 客户端 javascript 的 Visual Studio 项目类型

c# - 从命令行在 2017 Visual Studio 中构建项目?

visual-studio - 如何使用CMake生成具有32位和64位配置的VS proj

c# - 从不同的线程调试

debugging - 如何跟踪重复分配的生命周期堆使用情况

python - 在 Python 扩展中启动线程

c++ - 如何在 wince 设备(C++)上找到 SD 卡上的可用内存

c++ - 用类和 vector 重载赋值运算符