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

时间:2019-04-05 19:33:32

标签: visual-studio visual-studio-2017 visual-studio-debugging watch-window

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

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

是否有一种方法可以在调试会话之前完成对监视窗口的预填充?我有按时间顺序运行的代码。在执行中断期间花费较长的时间来暂停并设置监视,将导致程序崩溃。在设置变量监视对象时,此类超时崩溃会导致与调试器的交互变得困难。预先填充监视列表将有很大帮助。

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

2 个答案:

答案 0 :(得分:0)

仅当您在调试器中暂停时(例如在断点上),才能评估手表。在正常执行期间无法评估它们。您可以避免这种局限性:

  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/

答案 1 :(得分:0)

  

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

恐怕答案是否定的。目前,“监视”窗口只能在调试会话启动后进行配置,就像运行时窗口仅在调试期间发生一样。

因此,我们暂时无法在调试会话之前预先填充它。换句话说,这是设计使然。

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

由于在某些特定的调试情况下您的需求是有意义的,因此您也可以像用户声音一样在development community上发布建议,以添加新功能。