如何不断更新VS2008 Watch Window(不停止执行)?

时间:2009-05-09 20:51:54

标签: visual-studio-2008 debugging watch

在Adobe Director中,有一个监视窗口可在我的应用程序运行时更新。例如,如果我有一个游戏应用程序并且正在观看球对象的实例,我可以看到它的所有值(速度,高度,状态变量等)在应用程序运行时实时更新。我还可以在窗口中添加任何其他对象,并在不停止执行的情况下深入查看它的变量。

在Visual Studio(我是在2008年),在C#中有没有办法让Debug>在我的应用程序运行时观察窗口更新?换句话说,我想在应用程序运行时关注给定对象的不同变量,而不是冻结所有内容并在特定时刻检查事物的状态。

如果这不可能,有任何方法可以观察任意对象的值(不预先对这些硬编码)。例如,对于坦克对象,我们有位置,方向,速度等。假设有许多不同类型的游戏对象,每个对象具有十几个值。这些值每秒变化60次。

目标是能够在运行时选择一个游戏对象来“观察”,然后深入研究它的变量层次(与观察者窗格的方式相同)。同样,此工具事先不知道对象,因此不能对特定对象进行硬编码。

提前致谢!

亚当

6 个答案:

答案 0 :(得分:1)

如果您要监视的变量的特定值可以使用条件断点:http://msdn.microsoft.com/en-us/library/7sye83ce.aspx

当然,也有可信的ASSERT()宏。

如果您的调试需求非常复杂,您可能需要在应用程序中编写自定义代码以进行调试。通常,这种事情会被包含在#ifdef _DEBUG / #endif语句中,这样发布版本就不会受到影响。您可以支持从旧的日志文件调试备份到编写自定义监视窗口的所有内容,该窗口显示您需要查看的当前值。

答案 1 :(得分:1)

创建一个断点,右键单击它,选择命中事件,然后在那里设置变量的打印。这很有效。

答案 2 :(得分:1)

没有办法做到这一点。

答案 3 :(得分:0)

这可能会有所帮助:

http://msdn.microsoft.com/en-us/library/z4ecfxd9.aspx

打开或关闭自动属性评估

  
      
  1. 在“工具”菜单上,单击“选项”。
  2.   
  3. 在“选项”对话框中,打开“调试”节点,然后单击“常规”。   根据您的IDE设置,您可能需要选择全部显示   设置以查看“调试”节点。
  4.   
  5. 选择或清除启用属性评估和其他隐式功能   呼叫。
  6.   
  7. 单击“确定”。
  8.   

答案 4 :(得分:0)

我不知道一种观看方法而不会被打入调试器,但是你可以使用几种不同的方法。 我个人会使用跟踪Trace.Writeline或类似的东西(我使用自定义库)。但是,您也可以使用Tracepoints获得快速解决方案,Tracepoints是将内容输出到输出窗口的断点。

我有一个简短的谷歌,这个article似乎概述了如何设置它们,你把你的变量名称放在{}中,然后输出到输出窗口,似乎没有闯入调试器(虽然在幕后,这正是它的作用)

希望有所帮助

答案 5 :(得分:0)

我不确定是否可以像您描述的那样设置调试监视窗口不断更新。您是否考虑过在应用程序运行时使用将TRACE宏输出到输出面板的宏?

TRACE(_T("m_LocationX: %d\n"), m_LocationX);
TRACE(_T("m_LocationY: %d\n"), m_LocationY);

根据执行TRACE语句的频率,您的输出窗口可能会被泛洪,但它至少应该为您提供运行时所需的信息。


编辑1:如果您没有使用MFC,请查看解释替代方法的StackOverflow answer

编辑2:再次查看此问题,目前尚不清楚您是使用C ++还是.Net - 如果您使用的是C#,那么您可以使用{来获得类似的结果{1}}和Debug类 - 可以找到描述其用途的好文章here