【问题标题】:What are tracepoints used for?跟踪点有什么用?
【发布时间】:2014-05-28 19:21:03
【问题描述】:

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

【问题讨论】:

  • 为什么评论会有断点?

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


【解决方案1】:

调试器团队有一篇关于这个主题的很好的博客文章,也有例子: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 中)。而且它们本身不是断点,因为它们不会导致程序执行中断。当您需要检查某些内容但不停止程序时,这可能很有用,因为这会导致错误的行为无法重现等。

跟踪点是一种尝试,通过允许断点将信息记录到调试输出窗口并继续,而不是在用户界面。您也可以使用宏来执行此操作,但这可能会更耗时。

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

【讨论】:

    【解决方案2】:

    可以证明对调试很有帮助的用例:

    您可能希望调试一个被多次调用的函数(比如数百次),而您可能只想查看趋势,其中局部变量正在发生变化。通过放置断点可以做到这一点,但考虑在该函数处停止(调试时)数百次并在记事本中记下值的痛苦。使用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 的优势:

    • 不需要添加代码来生成日志。因此,构建代码没有压力,也没有清理代码的开销。
    • 与断点不同,它不会阻碍正在执行的代码流。
    • 它也可以打印局部变量的值。点击“When Hit”后输入{local_variable}
    • 您还可以在 Debugging 状态下插入跟踪点,就像对断点所做的那样。

    【讨论】:

      【解决方案3】:

      根据 MSDN:

      跟踪点是 Visual Studio 中的一项新调试器功能。跟踪点是一个带有与之关联的自定义操作的断点。当跟踪点被命中时,调试器会执行指定的跟踪点操作,而不是中断程序执行。

      【讨论】:

      • 不确定是不是新的,它们是在 VS 2008 中引入的
      猜你喜欢
      • 2013-06-09
      • 2023-03-03
      • 2021-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-09
      • 1970-01-01
      相关资源
      最近更新 更多