visual-studio - 在 VS2017 中运行调试会话之前,如何在监视窗口中配置监视变量?
问题描述
在我的所有搜索中,我没有遇到任何技巧、插件或设置,可以让我预先填充监视窗口以在调试期间使用。
在Visual Studio 2017中观察变量的众所周知的步骤是设置断点(可能在变量的第一个实例被赋值),然后将变量添加到Watch Window。在随后的运行中,该监视变量应保留在Watch Window中。
有没有办法在调试会话之前完成预填充监视窗口?我有按时间顺序运行的代码。在执行中断期间延长时间来暂停并设置监视会导致程序崩溃。在设置变量监视对象时,此类超时崩溃会导致与调试器的交互困难。预先填写观察名单会有很大帮助。
我知道我可以使用诸如 using 语句之类的技术,这些语句在代码执行期间Debug.Print(...)
会打印到输出窗口。但是,这不允许我对来自Watch Window的调试工作进行控制和视觉反馈。
解决方案
只有当您在调试器中暂停时(例如在断点处),才能评估手表。在正常执行期间无法评估它们。您可以通过以下方式解决此限制:
- 添加
Debug.Print(...)
或类似于输出值的代码的内容。 - 与 #1 类似,添加一个TracePoint,您可以在断点设置的操作设置中找到它(当您将鼠标悬停在断点上时,这是齿轮图标)。当 TracePoints 被命中时,它们将评估您在操作窗口中指定的表达式并将其记录到
Output
窗口中。TracePoints 与添加您自己的日志记录相比的优势在于,您可以在不构建代码的情况下将其关闭和打开。更多信息:https ://docs.microsoft.com/en-us/visualstudio/debugger/using-breakpoints?view=vs-2019#BKMK_Print_to_the_Output_window_with_tracepoints - 使用 VS Enterprise 仅功能快照,它是 IntelliTrace 的一部分。基本上设置你的断点,而不是停下来看看手表继续。每次您停止进程的快照时,都将捕获当时您的应用程序的状态。完成后,使用
Diagnostic Tools
窗口选择每个快照并激活它们。对于每个快照,您都可以像停止应用程序一样使用调试器。所以你可以使用手表和检查等。当然你不能因为应用程序已经运行,但你可以去下一个快照等。更多信息在:https ://docs.microsoft.com/en-us/ visualstudio/debugger/view-snapshots-with-intellitrace?view=vs-2019和https://devblogs.microsoft.com/visualstudio/step-back-while-debugging-with-intellitrace/
推荐阅读
- dns - Route53 不包括粘合记录
- android - 访问另一个活动的方法
- node.js - 用 nodejs 编写的 AWS Lambda 函数没有更新我的 DynamoDB
- c++ - 如何在 qt 中通过 ODBC 驱动程序连接到 oracle 12c?
- amazon-web-services - 如何使用承担角色将 S3 对象从另一个 AWS 账户放入您自己的账户 S3 存储桶?
- spring - 用我自己的自定义反序列化器替换 OAuth2AccessTokenJackson2Deserializer
- python - 如何在 SpaCy 的 Matcher 或 PhraseMatcher 中使用标准正则表达式
- unity3d - 是否可以将 Blender 中的粒子系统动画导入 Unity,并将其转换为 Unity 中的工作粒子?
- python - TensorFlow v2:CancelledError:[Op:StatefulPartitionedCall]
- tsql - "Incorrect syntax near 'WHERE'" in Delete queries