0

在我的所有搜索中,我没有遇到任何技巧、插件或设置,可以让我预先填充监视窗口以在调试期间使用。

在Visual Studio 2017中观察变量的众所周知的步骤是设置断点(可能在变量的第一个实例被赋值),然后将变量添加到Watch Window。在随后的运行中,该监视变量应保留在Watch Window中。

有没有办法在调试会话之前完成预填充监视窗口?我有按时间顺序运行的代码。在执行中断期间延长时间来暂停并设置监视会导致程序崩溃。在设置变量监视对象时,此类超时崩溃会导致与调试器的交互困难。预先填写观察名单会有很大帮助。

我知道我可以使用诸如 using 语句之类的技术,这些语句在代码执行期间Debug.Print(...)会打印到输出窗口。但是,这不允许我对来自Watch Window的调试工作进行控制和视觉反馈。

4

2 回答 2

1

只有当您在调试器中暂停时(例如在断点处),才能评估手表。在正常执行期间无法评估它们。您可以通过以下方式解决此限制:

  1. 添加Debug.Print(...)或类似于输出值的代码的内容。
  2. 与 #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
  3. 使用 VS Enterprise 仅功能快照,它是 IntelliTrace 的一部分。基本上设置你的断点,而不是停下来看看手表继续。每次您停止进程的快照时,都将捕获当时您的应用程序的状态。完成后,使用Diagnostic Tools窗口选择每个快照并激活它们。对于每个快照,您都可以像停止应用程序一样使用调试器。所以你可以使用手表和检查等。当然你不能因为应用程序已经运行,但你可以去下一个快照等。更多信息在:https ://docs.microsoft.com/en-us/ visualstudio/debugger/view-snapshots-with-intellitrace?view=vs-2019https://devblogs.microsoft.com/visualstudio/step-back-while-debugging-with-intellitrace/
于 2019-04-05T20:32:26.830 回答
1

在 VS2017 中运行调试会话之前,如何在监视窗口中配置监视变量?

恐怕答案是否定的。目前,Watch 窗口只能在调试会话启动后配置。这就像一个运行时窗口只在调试期间出现。

所以我们现在不能在调试会话之前预先填充它。换句话说,这是设计使然。

作为替代方法,您可以按照上面 Andy 的详细建议进行操作。

而且由于您的需求在某些特定的调试情况下是有意义的,您还可以在开发社区上发布您的建议,例如用户声音以添加新功能。

于 2019-04-08T05:26:23.723 回答