正在加载

为本地帧添加符号

Elastic Stack

要在以编译为本地代码(C、C++、Rust、Go 等)的编程语言编写的应用程序的跟踪中查看函数名称和行号,您需要使用 symbtool CLI 实用程序将符号推送到集群。

单击适合您系统的链接以下载 symbtool 二进制文件

注意

symbtool 二进制文件目前需要 Linux 机器。

在使用 symbtool 二进制文件之前,创建一个 Elasticsearch API 令牌。 使用 -t--api-key 参数传递此令牌。

您还需要从部署概述页面复制**符号**端点。 使用 -u--url 参数传递此 URL。

profiling symbolizer url

C/C++ 应用程序必须使用调试符号 (-g) 构建才能进行符号化。 Rust 应用程序必须使用 debug = 1(或更高)构建。 Go 二进制文件不需要任何特殊的编译器标志,并且默认带有调试信息。 调试信息不必部署到生产环境,但必须暂时存在才能将其推送到 Elastic 集群。

如果您不介意使用调试符号部署应用程序,请运行

./symbtool push-symbols executable -e ./my-app -u <symbolizer url> -t <API token>

如果您不想在生产环境中使用调试符号,请复制可执行文件并剥离副本。 然后,您可以使用 -d 参数指示该工具从原始未剥离的二进制文件中读取符号,同时仍从最终剥离的二进制文件中计算文件 ID。 推送符号后,您可以删除未剥离的二进制文件

cp ./my-app ./my-stripped-app
strip ./my-stripped-app
./symbtool push-symbols executable -e ./my-stripped-app -d ./my-app -u <symbolizer url> -t <API token>
rm ./my-app
警告

先推送调试信息,然后再剥离二进制文件不起作用。 使用 -e 参数传递的可执行文件用于计算将堆栈跟踪与其符号关联的文件 ID,并且稍后剥离二进制文件会更改该 ID。

Elastic 托管一个公共服务,其中包含各种流行的 Linux 发行版的存储库中所有软件包的符号信息。 从这些存储库安装的应用程序会自动符号化,无需用户采取任何操作。

Elastic 支持以下 Linux 发行版

  • Alpine Linux
  • Amazon Linux
  • Debian
  • Fedora
  • Ubuntu
© . All rights reserved.