调试,分析和跟踪的定义

时间:2017-01-18 17:18:58

标签: debugging profiling tracing

对系统调试不熟悉,我问自己这三个术语是什么意思:

  1. 调试
  2. 仿形
  3. 跟踪
  4. 任何人都可以提供定义吗?

2 个答案:

答案 0 :(得分:5)

嗯......当我为我的问题键入标签时,似乎堆栈溢出已经定义了标签描述中的术语。在这里,我发现他们的定义非常好:

  

Remote debugging 是在连接到远程部署的应用程序的本地开发环境中运行调试会话的过程。

     

Profiling 是通过运行称为分析器的分析工具来测量应用程序或系统的过程。分析工具可以关注许多方面:函数调用次数和计数,内存使用情况,CPU负载和资源使用情况。

     

Tracing 是专门用于记录日志以记录有关程序执行的信息。

答案 1 :(得分:1)

除了 Samuel 的回答:

  1. 调试是在应用程序中寻找错误及其原因的过程。错误可能是错误或只是一些意外行为(例如,用户抱怨他/她在使用无效日期格式时收到错误)。通常使用调试器来暂停应用程序的执行、检查变量并操作它们。
  2. 分析是一个动态分析过程,用于收集有关应用程序执行的信息。收集的信息类型取决于您的用例,例如请求的数量。分析的结果是包含收集到的信息的配置文件。配置文件的来源可以是确切的事件(参见下面的跟踪)或发生的事件样本。 由于数据汇总在配置文件中,因此事件发生的时间和顺序无关紧要。
  3. 跟踪“跟踪是程序内事件的日志”(Whitham)。这些事件可以按时间顺序排列。这就是为什么它们通常包含时间戳的原因。跟踪是生成和收集这些事件的过程。用例通常是流分析。

示例跟踪与分析:

Trace:
[2021-06-12T11:22:09.815479Z] [INFO] [Thread-1] Request started
[2021-06-12T11:22:09.935612Z] [INFO] [Thread-1] Request finished
[2021-06-12T11:22:59.344566Z] [INFO] [Thread-1] Request started
[2021-06-12T11:22:59.425697Z] [INFO] [Thread-1] Request finished

Profile: 
2 "Request finished" Events
2 "Request started" Events

因此,如果跟踪和分析测量相同的事件,您可以从跟踪中构建一个分析,而不是相反。
来源
惠瑟姆:https://www.jwhitham.org/2016/02/profiling-versus-tracing.html
IPM:http://ipm-hpc.sourceforge.net/profilingvstracing.html