程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper介绍

以下为你介绍的程序调试工具都可用在Linux系统上:Nokia Memory Profiler(Linux 内存分析器)、RDebug(基于真实流量的研发调试利器)、Facebook Flipper(移动应用调试平台)。

1、Nokia Memory Profiler(Linux 内存分析器)

Nokia Memory Profiler 是适用于 Linux 的内存分析器。

程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper介绍

程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper介绍

程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper介绍

特性:

可用于分析内存泄漏,查看内存消耗的确切位置,识别临时内存分配并检查过多的内存碎片。

收集每个内容分配和释放信息,以及完整的堆栈跟踪。

使用定制的堆栈展开实现,使其比其它类似工具损耗更少,在某些情况下可能会快几个数量级。

可以将收集的数据导出为各种不同的格式:可以将数据导出为 JSON、Heaptrack 和火焰图。

有自己的基于 Web 的 GUI,可用于分析。

可以将分析数据动态地流式传输到另一台机器,而不是在本地保存,这对于在内存受限的系统上进行分析非常有用。

支持 AMD64、ARM、AArch64 与 MIPS64 架构。

建立:

安装GCC,Rust和Yarn软件包管理器(用于构建GUI)。

建立它:

$ cargo build --release -p memory-profiler

$ cargo build --release -p memory-profiler-cli

从target/release/libmemory_profiler.so和target/release/memory-profiler-cli中获取二进制文件。

基本用法:

$ LD_PRELOAD=./libmemory_profiler.so ./your_application

$ ./memory-profiler-cli server memory-profiling_*.dat

然后打开Web浏览器并将其指向http://localhost:8080以访问GUI。

如果您不想使用GUI,则还可以利用服务器公开的REST API。例如:

生成泄漏分配的火焰图:

$ curl "http://localhost:8080/data/last/export/flamegraph?lifetime=only_leaked" > flame.svg

将泄漏的分配导出为ASCII树:

$ curl "http://localhost:8080/data/last/allocation_ascii_tree?lifetime=only_leaked"

将应用程序分配的最大的三个分配导出到JSON:(您应该将输出通过管道传递给json_reformat以便于人为读取)

$ curl "http://localhost:8080/data/last/allocations?sort_by=size&order=dsc&count=3"

导出最大的三个呼叫站点,至少分配10个,其中至少50%被泄漏:

$ curl "http://localhost:8080/data/last/allocation_groups?group_allocations_min=10&group_leaked_allocations_min=50%&sort_by=all.size&count=3"

下载地址:https://github.com/koute/memory-profiler

2、RDebug(基于真实流量的研发调试利器)

RDebug 是滴滴开源的一款用于 RD 研发、自测、调试的实用工具,可以被用来提升 RD 研发效率、保障代码质量进而减少线上事故。

适用场景:

适用于对已有接口进行代码重构、功能升级,且该接口已经有录制的流量。

不适合新开发的接口或未进行流量录制的接口。

支持新接口的方案在调研中。

技术方案:

因为我们需要使用线上的真实流量来进行线下的回放测试,所以我们需要将线上的真实流量保存下来,然后将保存的真实流量在线下环境进行回放一遍。故 Rdebug 的核心技术方案就是 流量录制和流量回放。

流量录制:即录制线上服务的真实请求,包括调用下游服务的 RPC 请求。流量录制的难点在于如何将上下游请求以及每次 RPC 的请求/响应一一对应。

流量回放:即用线上录制的流量,对线下测试代码进行回放,通过流量匹配 mock 掉下游 RPC 请求。因此,流量回放的难点在于请求的拦截和匹配。

整体架构图:

程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper介绍

下载地址:https://github.com/didi/rdebug

3、Facebook Flipper(移动应用调试平台)

Flipper (前身是 Sonar) 是 Facebook 的一个桌面应用,用来调试 iOS 和 Android 应用。可以在一个单一的桌面应用中检查和控制 app。如下图所示:

程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper介绍

要求:

macOS (while Flipper is buildable using other systems as well,only macOS is officially supported)。

node >= 8。

yarn >= 1.5。

iOS 开发者工具 (for developing iOS plugins)。

Android SDK and adb。

从源运行:

git clone https://github.com/facebook/flipper.git

cd flipper

yarn

yarn start

注意:如果您使用的是Windows,则需要使用Yarn 1.5.1。

构建独立的应用程序:

提供--mac,-win,-linux或它们的任意组合以yarn build,例如:

yarn build --mac --version $buildNumber

您可以在dist/文件夹中找到生成的工件。

下载地址:https://github.com/facebook/flipper

注明

以上就是程序调试工具Nokia Memory Profiler、RDebug、Facebook Flipper的介绍内容,这些程序调试工具都能使用在Linux操作系统中。

栏目相关文章