追踪点是用于什么目的?

39
它们只能放在方法名称上。它们的作用和用途是什么?

12
为什么评论中会有断点? - lost_in_the_source
3个回答

37
Debugger团队在这个主题上有一篇很好的博客文章,其中还提供了示例:http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/10/tracepoints.aspx https://web.archive.org/web/20190109221722/https://blogs.msdn.microsoft.com/devops/2013/10/10/tracepoints/ Tracepoints并非新功能(自VS 2005以来就已存在)。 它们也不是断点,因为它们不会导致程序执行停止。当你需要检查某些内容但不希望停止程序时,这可以很有用,因为停止程序可能导致无法重现错误行为等。
Tracepoints是为了解决无法停止程序进行检查的情况而设计的,因为这会导致某些行为无法重现,通过允许断点记录信息到调试输出窗口并继续运行,而不暂停UI界面。您也可以使用宏来实现此操作,但这可能更耗费时间。
要设置跟踪点,请先在代码中设置断点。然后在断点上使用上下文菜单,选择“触发时...”菜单项。现在可以为断点添加日志语句并关闭默认的停止操作,以便记录信息并继续运行。您可以添加许多其他信息到日志字符串中,包括关于bp位置的静态信息,例如文件、行、函数和地址。您还可以添加动态信息,例如表达式、调用函数或调用堆栈。像添加线程信息和进程信息这样的内容有助于跟踪处理多个线程和/或进程时的时间错误。

2019年博客文章“Tracepoints: Debug with less clutter” https://devblogs.microsoft.com/visualstudio/tracepoints/ - ofthelit

12

在调试中非常有帮助的用例:

有时您可能需要调试一个被多次调用(比如说数百次)的函数,并且您可能只想查看本地变量的趋势。虽然使用断点可以实现这一点,但是想象一下,在调试过程中停止该函数数百次,并将值记录在记事本中的麻烦。使用跟踪点可以轻松解决这个问题,它直接将日志放入“输出”窗口中,可以轻松分析或清除。这样可以节省大量手动工作和耐心。

输出窗口中的示例日志(可能运行到数百行):

keyframeNo = 2, time = 1100
keyframeNo = 1, time = 0
keyframeNo = 1, time = 1
keyframeNo = 1, time = 1
keyframeNo = 1, curTime =22
curTime=1132835, keyframeno=15
keyframeNo = 2, time = 1
keyframeNo = 2, time = 1

如何使用:

在代码上右键单击 > 断点 > 插入跟踪点

使用 TracePoint 的优点:

  • 无需添加生成日志的代码。因此,无需构建代码,也无需清理代码,这样就没有压力。
  • 不像断点那样阻塞正在执行的代码流程。
  • 它还可以打印本地变量的值。在单击“命中时”后输入{local_variable}
  • 您也可以在调试状态下插入跟踪点,就像对断点所做的那样。

5
根据 MSDN 的说法:
跟踪点是 Visual Studio 中的新调试器功能。跟踪点是带有自定义操作的断点。当命中跟踪点时,调试器将执行指定的跟踪点操作,而不是或者除了中断程序执行之外。

不太确定它是否还算新的东西,它们是在VS 2008中引入的。 - Habib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接