【发布时间】:2014-05-28 19:21:03
【问题描述】:
它们只能放在方法名称上。它们的用途和用途是什么?
【问题讨论】:
-
为什么评论会有断点?
标签: c# c++ asp.net visual-studio debugging
它们只能放在方法名称上。它们的用途和用途是什么?
【问题讨论】:
标签: c# c++ asp.net visual-studio debugging
调试器团队有一篇关于这个主题的很好的博客文章,也有例子:http://blogs.msdn.com/b/visualstudioalm/archive/2013/10/10/tracepoints.aspx
跟踪点根本不是一个新功能(自 VS 2005 以来它们一直在 Visual Studio 中)。而且它们本身不是断点,因为它们不会导致程序执行中断。当您需要检查某些内容但不停止程序时,这可能很有用,因为这会导致错误的行为无法重现等。
跟踪点是一种尝试,通过允许断点将信息记录到调试输出窗口并继续,而不是在用户界面。您也可以使用宏来执行此操作,但这可能会更耗时。
要设置跟踪点,首先在代码中设置断点。然后使用断点上的上下文菜单并选择“When Hit...”菜单项。您现在可以为断点添加日志语句并关闭默认的停止操作,以便您登录并继续。您可以将许多其他信息添加到日志字符串中,包括有关 bp 位置的静态信息,例如文件、行、函数和地址。您还可以添加动态信息,例如表达式、调用函数或调用堆栈。添加线程信息和进程信息之类的操作可以帮助您在处理多个线程和/或进程时跟踪计时错误。
【讨论】:
可以证明对调试很有帮助的用例:
您可能希望调试一个被多次调用的函数(比如数百次),而您可能只想查看趋势,其中局部变量正在发生变化。通过放置断点可以做到这一点,但考虑在该函数处停止(调试时)数百次并在记事本中记下值的痛苦。使用tracepoint很容易做到这一点,它直接将日志放在“Output”窗口中,可以轻松分析甚至清除。 节省数小时的人工和耐心。
输出窗口的示例日志(可以运行到数百行):
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
使用方法:
在代码处右击鼠标 > BreakPoint > Insert TracePoint
使用 TracePoint 的优势:
【讨论】:
根据 MSDN:
跟踪点是 Visual Studio 中的一项新调试器功能。跟踪点是一个带有与之关联的自定义操作的断点。当跟踪点被命中时,调试器会执行指定的跟踪点操作,而不是中断程序执行。
【讨论】: