调试,概要分析和跟踪的定义

Sam*_*uel 6 debugging trace profiling

我是系统调试的新手,我问自己这三个术语的含义:

  1. 调试
  2. 剖析
  3. 追踪

任何人都可以提供定义吗?

ben*_*o22 12

除了塞缪尔的回答之外:

  1. 调试是在应用程序中查找错误及其原因的过程。bug 可能是一个错误,也可能只是一些意外的行为(例如,用户抱怨他/她在使用无效的日期格式时收到错误)。通常使用调试器来暂停应用程序的执行、检查变量并操作它们。
  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
Run Code Online (Sandbox Code Playgroud)

因此,如果跟踪和分析测量相同的事件,您可以从跟踪构建配置文件,但反之则不然。
来源
Whitham: https: //www.jwhitham.org/2016/02/profiling-versus-tracing.html
IPM:http://ipm-hpc.sourceforge.net/profilingvstracing.html


Sam*_*uel 7

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

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

分析是通过运行称为探查器的分析工具来测量应用程序或系统的过程。分析工具可以集中在许多方面:函数调用时间和计数,内存使用率,CPU负载和资源使用率。

跟踪是日志的一种专门用途,用于记录有关程序执行的信息。

  • 塞缪尔,你真是个天才。我希望有一天塞缪尔(Samuel)过来,并感谢您回答他的问题。 (3认同)