gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 03:08:30 26 4
gpt4 key购买 nike

我的问题基本上是,每当我使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com