什么是跟踪点用于?

时间:2014-04-14 17:48:00

标签: c# c++ asp.net visual-studio debugging

它们只能放在方法名称上。它们是如何使用的以及它们的用途是什么?

enter image description here

3 个答案:

答案 0 :(得分:27)

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/

跟踪点根本不是新功能(自VS 2005以来,它们一直在Visual Studio中)。它们本身并不是断点,因为它们不会导致程序执行中断。当你需要检查某些东西时,这可能很有用,但不能停止程序,因为这会导致bug的行为不能重现等等。

跟踪点试图克服这种情况,当你不能通过允许断点将信息记录到调试输出窗口并继续时,不能重新检查某些行为来检查某些内容暂停UI。您也可以使用宏来执行此操作,但这可能会更耗时。

要设置跟踪点,请先在代码中设置断点。然后使用断点上的上下文菜单,选择“When Hit ...”菜单项。您现在可以为断点添加日志语句并关闭默认的“停止”操作,以便您记录并继续。您可以添加到日志字符串中的许多其他信息,包括有关bp位置的静态信息,例如文件,行,函数和地址。您还可以添加动态信息,如表达式,调用函数或callstack。添加线程信息和进程信息等功能可以帮助您在处理多个线程和/或进程时跟踪时序错误。

答案 1 :(得分:6)

用于调试真正有用的用例:

有时你希望调试一个被多次调用的函数(比如数百个),你可能只想看 趋势< / em> ,其中局部变量正在发生变化。通过设置断点可以做到这一点,但是考虑在该函数停止(同时调试)数百次,并注意记下记事本中的值。使用tracepoint这样做很容易,它直接将日志放入&#34; 输出&#34;窗口,可以轻松分析甚至清除。 节省数小时的人工和耐心。

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

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

如何使用

右键单击鼠标代码&gt; BreakPoint&gt;插入TracePoint

使用TracePoint的优势:

  • 无需添加代码来生成日志。因此,没有构建代码的紧张,也没有清理代码的开销。
  • 与断点不同,它不会妨碍正在执行的代码流。
  • 它也可以打印局部变量的值。点击&#34后输入 {local_variable} ; 点击&#34;
  • 您也可以在调试状态下插入跟踪点,就像对断点一样。

答案 2 :(得分:5)

根据MSDN:

  

跟踪点是Visual Studio中的新调试器功能。跟踪点是一个断点,其中包含与之关联的自定义操作。当一个跟踪点被命中时,调试器执行指定的跟踪点操作,而不是破坏程序执行,或者除此之外还执行。