1

Live 和 IntelliTrace 调试之间有什么区别吗?

还有为什么我在编写 C++ 时不能使用 IntelliTrace?如果有办法在编写 c++ 时使用它,我该如何调整它?

4

2 回答 2

1

对于实时调试,目标应用程序暂停,调试器可以观察(有时修改)整个目标进程。

IntelliTrace,顾名思义,可以理解为“智能跟踪”,将某些认为有价值的信息记录到日志文件(.itrace 文件)中。您可以稍后在另一台机器上保存并打开日志文件。记录的信息包括应用程序的进程、线程、模块、IntelliTrace 事件和基于用户配置的函数调用。对于每个事件和函数调用,还会记录带有所选参数值的调用堆栈。

Visual Studio 需要一些 UI 来查看此日志,而调试器 UI 几乎拥有一切。这并不精确,但您通常可以将“IntelliTrace 调试”理解为使用调试器 UI 查看跟踪日志。大多数调试器窗口(进程、线程、调用堆栈、本地变量、模块等)都按预期工作,但它们只是显示目标应用程序历史中发生的事件或函数调用。用户只能观察,但不能修改目标应用程序。

于 2014-02-09T00:53:41.810 回答
1

IntelliTrace 不同于实时调试。http://msdn.microsoft.com/en-us/library/dd264915.aspx

它不是为 C++ 实现的,因为它使用 .net 环境。IntelliTrace 仅在Visual Studio Ultimate(或 VS2015 的企业版中可用,尽管它可能会在未来版本中更改)并且上面的链接已经解释了所有功能。

实时调试和 IntelliTrace 之间的区别在于某种“可重玩性”。虽然您可以通过实时调试进行转储,但您只能获得一个时间点,而 IntelliTrace 允许您收集和检查应用程序的历史记录。IntelliTrace 必须配置为在应用程序运行时记录其数据。

从上面的页面复制粘贴:

传统或实时调试仅显示您应用的当前状态,有关过去事件的数据有限。您要么必须根据应用程序的当前状态推断这些事件,要么必须通过重新运行应用程序来重新创建这些事件。

IntelliTrace 通过在这些时间点记录特定事件和数据来扩展这种传统的调试体验。这可以让您在不重新启动应用的情况下查看应用中发生的情况,尤其是当您跳过错误所在的位置时。IntelliTrace 在传统调试过程中默认开启,自动且不可见地收集数据。这使您可以在传统调试和 IntelliTrace 调试之间轻松切换,以查看记录的信息。请参阅使用 IntelliTrace 记录代码执行以在 Visual Studio 中进行调试和 IntelliTrace 收集哪些数据?

小轶事:Visual Studio 团队试图将尽可能多的功能推送到较低版本中,以使更多人可以使用它们,但是在哪个版本中可用的功能由营销部门决定。

于 2014-02-07T14:31:44.837 回答