跳转到主要内容

TraceCode工具包 "strace" 是动态构建跟踪器和绘图器

项目描述

跟踪Linux上的构建

TraceCode是一个分析跟踪的构建执行的工具,这样您可以了解哪些文件被构建到二进制文件中,并最终部署到您的分布式软件中。

此TraceCode工具包使用strace捕获构建的系统级跟踪,并可以从此跟踪(即构建图)重建构建如何转换和编译文件。

1. 跟踪构建

请参阅README-build-tracing.rst以跟踪构建

2. 系统要求和安装

确保已安装Python:

python -v

如果没有安装,请根据需要安装它,确保它位于您的路径中。有关详细信息,请参阅您当地的Linux发行商。

确保您已安装Graphviz并位于您的路径中:

dot -v

如果没有安装,请根据需要安装它,确保它位于您的路径中。有关详细信息,请参阅https://graphviz.cpp.org.cn/

如果没有安装,您将看到错误消息,结果可能无法使用。

3. 安装TraceCode

https://github.com/nexb/tracecode-toolkit-strace获取它并解压缩。本文件中,将此解压缩的路径称为<tracecode_dir>。

然后执行此命令以设置TraceCode

./configure --dev

最后运行内置的自检以验证您的安装

py.test -vvs tests

4. 安装strace

One debian

sudo apt-get strace

5. 分析您的构建

分析跟踪的构建是一个多阶段的过程,涉及

  • 解析和检查初始跟踪数据,

    • 可选地过滤解析的跟踪数据,

    • 可选地收集构建过程中读取和写入的文件清单,

  • 创建构建的源(输入)和目标(输出)文件列表,

  • 分析构建图以确定源到目标关系,例如源代码文件被编译成二进制文件,

    • 可选地创建图形表示以可视化构建图的一部分。

每个步骤都是通过在命令行中调用tracecode并使用不同的选项和参数来执行的。

使用以下命令运行跟踪分析

tracecode <options> <command> <arguments>

使用命令帮助

tracecode -h

教程

有关额外详细信息,请参阅README-build-tracing.rst。

0. 跟踪命令

使用strace这种方式

$(which strace) -ff -y -ttt -qq -a1 \
-o {NEW EMPTY tracing_dir}/{trace prefix} \
{build command}

1. 解析收集到的原始跟踪数据

创建一个新的空目录来存储解析的跟踪数据。然后使用“解析”命令进行解析

tracecode parse <RAW TRACES DIR INPUT> <PARSED TRACES DIR OUTPUT>

这将解析跟踪数据并确保它们可以被处理且是完整的

2. 收集跟踪过程中处理的文件清单

如果跟踪数据是一致的,下一步是收集读取和写入的文件清单。使用“list”命令(应称为清单)。它从一个解析的跟踪数据创建两个文件:一个只读取的文件列表和一个写入的文件列表

tracecode list <PARSED TRACES DIR INPUT> <READS OUTPUT FILE> <WRITES OUTPUT FILE>

“list”命令提取跟踪中使用的所有路径。

4. 可选:猜测源和目标

您可以使用“guess”命令来猜测源和目标,但这只是一个猜测。在小型、定义明确的简单代码库上猜测效果不错,但在大型代码库上可能不太适用。

猜测的方法是这样的
  • 只读文件很可能是源/开发文件

  • 只写入读取的文件很可能是目标/部署文件

5. 组装源和目标的清单

一旦您已过滤了解析后的跟踪,您需要创建一个包含您的源(原始开发文件)的文件列表,以及另一个包含您的目标(部署文件)的文件列表。您需要分别在每个单独的文件中构建这些清单。您可以尝试使用猜测命令,但这只是基于图的盲目猜测。路径的结构应该与“list”输出的结构完全相同。源和目标文件应该在读取和写入操作中,因此您可以使用这些列表作为输入。或者,您可以使用在跟踪之前(您的源)和之后保留的find命令的输出,并将其与diff进行比较以找到候选文件。

使用这些列表再次构建新列表,以定义开发/源文件列表和部署/目标文件列表。

6. 分析源到目标的转换

然后您可以运行分析命令以获取源到目标部署分析。

7. 可选:图形化选择源到目标转换的子集

您可以选择性地创建一个图形,追踪多个源到单个目标或多个目标到单个源的转换(选择性是因为这需要很长时间运行,并且大图形难以可视化)

常见问题解答

Q:在解析原始跟踪时我遇到了这个错误

ERROR:tracecode:INCOMPLETE TRACE, 149249 orphaned trace(s) detected. First pid is: 3145728.

A:这是一个严重错误,意味着您的跟踪不一致,因为某些进程跟踪无法与初始命令启动图相关联,因此是无关的。这可能会发生如果您错误地跟踪了几个命令,并将strace输出保存在同一目录下。您需要从干净的空目录开始重新收集跟踪。

Q:在解析原始跟踪时我收到了几个警告

WARNING:tracecode:parse_line: Unable to decode descriptor for pid: 3097012, line: '1399882436.807573 dup2(5</extra/linux-2.6.32/scripts/mksysmap>, 255) = 255\n'

A:这只是一个警告,您大多数时候可以忽略它。这里文件描述符255不存在(也不能存在),因此出现警告。

许可证

  • Apache-2.0

  • 第三方依赖项的多个许可证(GPL2/3、LGPL、MIT、BSD 等)。

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

tracecode-toolkit-strace-0.21.0.tar.gz (14.0 MB 查看哈希值)

上传时间 源代码

构建分布

tracecode_toolkit_strace-0.21.0-py3-none-any.whl (83.3 kB 查看哈希值)

上传时间 Python 3

支持者