【问题标题】:How does instrumentation in profiling work?分析中的仪器如何工作?
【发布时间】:2015-05-21 12:53:57
【问题描述】:

分析中的仪器究竟是如何工作的?

我应该知道什么才能自己实现一个使用仪器的简单分析器?

【问题讨论】:

  • 什么平台和操作系统?例如,在某些嵌入式系统上,仪器包括将脉冲写入测试点引脚和使用示波器。其他人可能会使用 system tick 计数。
  • 另外,一些编译器提供配置文件的帮助,例如 GNU 编译器。
  • 我假设你知道测量函数持续时间的特点。您没有获得线路级时序。当同一个函数在调用堆栈上更高时,您必须暂停对函数的测量。如果您有大量调用的小函数,则测量持续时间的开销本身可能占主导地位。如果检测的原因是为了获取包括 I/O 在内的时间,另一种选择是调用堆栈的简单挂钟时间采样。 (闹钟中断可以做到——频率不需要很高。)
  • @ThomasMatthews 带有 linux 或 unix 的 PC。它不适用于嵌入式系统。
  • @MikeDunlavey 不幸的是我不知道如何测量函数的持续时间。

标签: c++ profiling profiler instrumentation


【解决方案1】:

仪表是添加(例如)在函数体周围的额外代码,用于记录统计信息,例如函数被调用的次数和调用时间。详细信息完全取决于目标分析器实现。

在编译语言中,编译器和/或链接器通常需要在构建程序或库时引入插桩。因此,通用分析器需要编译器和/或链接器的特定支持。

在某些其他语言中,可以通过特定于该语言的机制在运行时引入检测。

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 2011-08-14
    • 2010-10-02
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2010-10-04
    相关资源
    最近更新 更多