什么是跟踪点用于?

Jud*_*ude 28 c# c++ asp.net debugging visual-studio

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

在此输入图像描述

小智 29

Debugger团队在这个主题上有一篇很好的博客文章,并附有例子:http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/10/tracepoints.aspx

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

跟踪点是一种尝试,可以通过允许断点将信息记录到调试输出窗口并继续,而无需在UI处暂停来阻止程序检查某些内容,因为这会导致某些行为无法重现.您也可以使用宏来执行此操作,但这可能会更耗时.

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


Sau*_*ahu 7

用例可以证明它在调试中非常有用:

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

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

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
Run Code Online (Sandbox Code Playgroud)

如何使用它:

在代码> BreakPoint>插入TracePoint右键单击鼠标

使用TracePoint的优点:

  • 没有必要添加代码生成日志.因此,构建代码没有紧张,也没有清理代码的开销.
  • 与断点不同,它不会阻碍正在执行的代码流.
  • 它也可以打印局部变量的值.点击" When Hit " 后输入{local_variable}
  • 您也可以在调试状态中插入跟踪点,就像对断点一样.


Edw*_*rak 5

根据MSDN:

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