3

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

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

如果这不可能,是否有任何方法可以查看任意对象的值(无需预先对这些对象进行硬编码)。例如,对于坦克对象,我们有位置、方向、速度等。假设有几十个不同类型的游戏对象,每个对象都有十几个值。这些值每秒变化 60 次。

目标是能够在运行时选择要“观察”的游戏对象,然后深入了解它的变量层次结构(与观察器窗格的方式相同)。同样,此工具事先不了解对象,因此无法针对特定对象进行硬编码。

提前致谢!

亚当

4

6 回答 6

1

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

当然,也总是有可靠的 ASSERT() 宏。

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

于 2009-05-13T22:20:23.640 回答
1

创建一个断点,右键单击它,选择命中事件,并在那里设置变量的打印。这行得通。

于 2009-07-14T15:58:26.137 回答
1

没有办法做到这一点。

于 2009-10-14T16:00:56.827 回答
0

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

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

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


编辑 1:如果您不使用 MFC,请查看解释替代方法的StackOverflow答案。

编辑 2:再次查看这个问题,不清楚您使用的是 C++ 还是 .Net - 如果您使用的是 C#,那么您可以通过使用DebugandTrace类来获得类似的结果 - 一篇描述它们使用的好文章可以是在这里找到。

于 2009-08-10T22:25:42.233 回答
0

这可能会有所帮助:

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

打开或关闭自动属性评估

  1. 在工具菜单上,单击选项。
  2. 在选项对话框中,打开调试节点,然后单击常规。根据您的 IDE 设置,您可能需要选择显示所有设置才能查看调试节点。
  3. 选择或清除启用属性评估和其他隐式函数调用。
  4. 单击确定。
于 2009-05-09T20:59:07.853 回答
0

我不知道在不被调试器破坏的情况下进行观看的方法,但是您可以使用几种不同的方法。我会亲自使用 Trace 和 Trace.Writeline 或类似的东西(我使用自定义库)。但是,您也可以使用 Tracepoints 获得快速解决方案,这是将内容输出到输出窗口的断点。

我有一个简短的谷歌,这篇文章似乎给出了如何设置它们的概述,你把你的变量名放在 { } 中,它们被输出到输出窗口,似乎没有闯入调试器(尽管在幕后这正是它确实)

希望有帮助

于 2009-05-09T21:15:55.800 回答