Visual Studio 2015调试:不能展开局部变量?
Visual Studio 2015 Debugging: Can't expand local variables?
我正在使用 Visual Studio 2015 预览版,我正在尝试调试我的项目。我之前使用的是 VS 2012,并且很大程度上依赖于能够悬停并展开局部变量来查看它们的值。我现在正在尝试在 2015 年这样做,但是当我将鼠标悬停在一个变量上时,显示的框只显示“(局部变量)类名变量名”(例如“(局部变量)字符串标题”)。没有展开按钮,也没有在框中显示变量的值。
是否需要更改设置才能将鼠标悬停在变量上并展开它们?
这可能是一个错误。 请 file a Connect bug 如果你有一个复制。
同时,您可以通过将调试器选项设置为使用旧版调试引擎来解决该问题:工具 -> 选项 -> 调试 -> 常规:选中 "Use the legacy C# and VB expression evaluators" 和 "Use Managed Compatibility Mode".
该解决方法每次都对我有用。但是请仍然提交错误!
我有一个类似的问题,当我将鼠标悬停在我的局部变量上时,有些会让我深入研究,有些则什么都不显示。经过一番挖掘,我在 msdn here 上找到了一篇文章,建议在 VS 中重置设置。执行此操作后,我收到通知,我 运行 处于发布模式,并且某些调试功能可能不可用。切换到调试模式后,一切正常。
希望这对你也有用。
如here所述,您需要在调试 --> 选项 --> 调试 --> 常规中启用检查“在模块加载时抑制 JIT 优化(仅限托管)”。
您还需要删除项目属性中的 "Optimize code" 标志。
我在 VS2015 中遇到了类似的问题,其中一些变量会显示调试值,而其他变量在悬停时不会显示任何内容。
启用 Andrew Arnott 的以下设置解决了我的问题:
工具 -> 选项 -> 调试 -> 常规:"Use the legacy C# and VB expression evaluators"
我发现了在使用 CLI 进行调试时进入本机代码并访问 STL 容器内容的方法:
Tools\Options...\Debugging\General :取消选中 'Use Managed Compatibility Mode'(是!取消选中!)
在本机代码中,要添加断点,只需添加:
断言(假);
当触礁时,只需单击 'Retry' 进行调试或单击 'Ignore' 继续。
Visual Studio 2015 调试愉快:)
小智
我正在处理没有优化集的 'Debug' 配置,所以我重复:
使用托管兼容性:可以使用断点,但不能观察值
不使用托管兼容性:不能使用断点,但可以观察值
因此,在不使用托管兼容性时使用断言作为断点允许您在需要的地方停止并观察值。
试一试。
我向您提供了技巧,因为我现在正面临同样的问题,距最终交付还有 1 周。 MS 假装计划在更新 2 中对 2016 年进行全面修复,这简直令人难以忍受。
顺便说一句,这又是一个完美的 'break' :
int *p = NULL, i = 1 / *p;
小智
我发现只需将带有 "Release and debug" 的组合框改回 debug 即可让我在再次调试代码时看到变量的扩展。
这个最新的解决方案适用于我家用电脑上的 VS 2017。
我的工作 PC 在 "Build >> Clean Solution option and will even work when the combobox is set to " 发布后能够在 2017 年显示此扩展。
祝其他任何想要 VS 的精彩调试帮助的人好运。我希望通过使用其中一种方法,您能够回到 "normal".
我有一个项目正在使用缩小的 JavaScript 文件,并且想使用 TypeScript 文件进行调试。我将未缩小的 JavaScript 和关联的 TypeScript 放入项目中,并将引用更改为使用普通的 JavaScript 文件而不是缩小的文件。我的断点在 TypeScript 文件中被击中,但我没有得到悬停信息(令人惊讶的是它看起来像添加 object/variable 因为手表似乎工作)。
为了修复,我只是从项目文件中排除了缩小的 JavaScript,并包含了 JavaScript。 (我排除的 TypeScript 文件)。
这在 VS2017 中对我有用(我的 VS 是德语的,所以选项卡名称可能有点不同):
项目 -> 属性 -> C/C++ -> 代码生成 -> RunTimeErrorCheck->\RTC
也可以尝试停用优化选项,因为让您的代码更快可能意味着无法观察局部变量的值:
项目 -> 属性 -> C/C++ -> 优化 -> 禁用
在我的例子中,解决方案配置设置为调试,但解决方案平台设置为 混合平台 。将 Solution Platform 设置为 Any CPU 解决了问题
我正在使用 Visual Studio 2015 预览版,我正在尝试调试我的项目。我之前使用的是 VS 2012,并且很大程度上依赖于能够悬停并展开局部变量来查看它们的值。我现在正在尝试在 2015 年这样做,但是当我将鼠标悬停在一个变量上时,显示的框只显示“(局部变量)类名变量名”(例如“(局部变量)字符串标题”)。没有展开按钮,也没有在框中显示变量的值。
是否需要更改设置才能将鼠标悬停在变量上并展开它们?
这可能是一个错误。 请 file a Connect bug 如果你有一个复制。
同时,您可以通过将调试器选项设置为使用旧版调试引擎来解决该问题:工具 -> 选项 -> 调试 -> 常规:选中 "Use the legacy C# and VB expression evaluators" 和 "Use Managed Compatibility Mode".
该解决方法每次都对我有用。但是请仍然提交错误!
我有一个类似的问题,当我将鼠标悬停在我的局部变量上时,有些会让我深入研究,有些则什么都不显示。经过一番挖掘,我在 msdn here 上找到了一篇文章,建议在 VS 中重置设置。执行此操作后,我收到通知,我 运行 处于发布模式,并且某些调试功能可能不可用。切换到调试模式后,一切正常。
希望这对你也有用。
如here所述,您需要在调试 --> 选项 --> 调试 --> 常规中启用检查“在模块加载时抑制 JIT 优化(仅限托管)”。
您还需要删除项目属性中的 "Optimize code" 标志。
我在 VS2015 中遇到了类似的问题,其中一些变量会显示调试值,而其他变量在悬停时不会显示任何内容。
启用 Andrew Arnott 的以下设置解决了我的问题: 工具 -> 选项 -> 调试 -> 常规:"Use the legacy C# and VB expression evaluators"
我发现了在使用 CLI 进行调试时进入本机代码并访问 STL 容器内容的方法:
Tools\Options...\Debugging\General :取消选中 'Use Managed Compatibility Mode'(是!取消选中!)
在本机代码中,要添加断点,只需添加:
断言(假);
当触礁时,只需单击 'Retry' 进行调试或单击 'Ignore' 继续。
Visual Studio 2015 调试愉快:)
小智
我正在处理没有优化集的 'Debug' 配置,所以我重复:
使用托管兼容性:可以使用断点,但不能观察值
不使用托管兼容性:不能使用断点,但可以观察值
因此,在不使用托管兼容性时使用断言作为断点允许您在需要的地方停止并观察值。
试一试。
我向您提供了技巧,因为我现在正面临同样的问题,距最终交付还有 1 周。 MS 假装计划在更新 2 中对 2016 年进行全面修复,这简直令人难以忍受。
顺便说一句,这又是一个完美的 'break' :
int *p = NULL, i = 1 / *p;
小智
我发现只需将带有 "Release and debug" 的组合框改回 debug 即可让我在再次调试代码时看到变量的扩展。
这个最新的解决方案适用于我家用电脑上的 VS 2017。
我的工作 PC 在 "Build >> Clean Solution option and will even work when the combobox is set to " 发布后能够在 2017 年显示此扩展。
祝其他任何想要 VS 的精彩调试帮助的人好运。我希望通过使用其中一种方法,您能够回到 "normal".
我有一个项目正在使用缩小的 JavaScript 文件,并且想使用 TypeScript 文件进行调试。我将未缩小的 JavaScript 和关联的 TypeScript 放入项目中,并将引用更改为使用普通的 JavaScript 文件而不是缩小的文件。我的断点在 TypeScript 文件中被击中,但我没有得到悬停信息(令人惊讶的是它看起来像添加 object/variable 因为手表似乎工作)。
为了修复,我只是从项目文件中排除了缩小的 JavaScript,并包含了 JavaScript。 (我排除的 TypeScript 文件)。
这在 VS2017 中对我有用(我的 VS 是德语的,所以选项卡名称可能有点不同):
项目 -> 属性 -> C/C++ -> 代码生成 -> RunTimeErrorCheck->\RTC
也可以尝试停用优化选项,因为让您的代码更快可能意味着无法观察局部变量的值:
项目 -> 属性 -> C/C++ -> 优化 -> 禁用
在我的例子中,解决方案配置设置为调试,但解决方案平台设置为 混合平台 。将 Solution Platform 设置为 Any CPU 解决了问题