当前位置: 首页 > news >正文

magic - trace:高分辨率追踪利器,解决应用难题,还能深入洞悉程序运行!

magic - trace 概述

magic - trace 能够收集并展示进程活动的高分辨率追踪信息,可用于解决生产环境中应用程序处理请求速度慢、了解代码实际运行情况、获取应用崩溃前活动历史等问题。它性能开销在 2% - 10% 之间,使用时无需修改应用程序,能以约 40 纳秒分辨率追踪函数调用,可呈现回溯约 10 毫秒的调用栈时间线。使用方式与 perf 类似,关键区别在于 perf 采样调用栈,magic - trace 利用 Intel Processor Trace 进行环形缓冲区快照,之后可通过交互式时间线查看情况。还能针对函数追踪或附加到进程上按 Ctrl + C 停止查看追踪信息。

用户评价

Francis Ricci 称 Magic - trace 是用过的最简单的命令行调试工具之一;Andrew Hunter 表示它不只是用于性能分析,能让人直接了解程序情况,建议用于深入了解程序的场景;Doug Patti 认为 perf 和 magic - trace 各有优势,magic - trace 能在任何缩放级别切片分析,可看到 70 纳秒函数的所有调用,这在 perf 中看不到。

安装

安装前要确保系统满足支持条件,如大多数虚拟机不支持,仅支持 Intel 处理器(Skylake 及以后型号),仅适用于 Linux 系统。可从最新版本页面获取二进制文件,预构建二进制文件需执行 `chmod +x magic - trace` 赋予权限,软件包则运行 `sudo dpkg -i magic - trace*.deb` 安装,安装后运行 `magic - trace - help` 测试,显示帮助信息则安装成功。

快速上手

有一个示例 C 程序,是 `man 3 dlopen` 示例的修改版本,下载编译运行后,运行 `magic - trace attach - pid $(pidof demo)`,看到成功附加消息后等待几秒按 Ctrl + C 停止,会生成 `trace.fxt.gz` 文件。打开 `magic - trace.org`,点击“Open trace file”选择文件展开追踪信息。使用快捷键操作,如按 `W` 放大、`S` 缩小等,还能测量 `cos` 函数运行时间,示例中约需 5.7 微秒。与 perf 工作流程不同,magic - trace 提出假设能力出色,如发现 `cos` 函数运行 6 微秒过长,放大后有粉色“[untraced]”单元格,以 root 权限重新运行并传递 `- trace - include - kernel` 参数可看到堆栈跟踪信息,示例程序调用两次 `cos` 函数,第二次耗时更短且无页面错误。

使用方法

magic - trace 持续记录控制流到环形缓冲区,触发条件时进行快照并重建调用栈。触发快照方式有两种:一是按 Ctrl + C 停止,未快照时对程序结束状态快照;二是应用程序调用函数时触发,通过 `- trigger` 标志实现,有不同选择方式。停止指示器可放在异步运行时调度器周期过长、服务器请求处理时间过长、垃圾回收器运行后、编译器通过后等场景,可保留在生产代码中,调用约消耗 10 微秒时间,仅在快照时产生开销。

文档

更多文档可在 magic - trace 维基页面查看。

讨论

可加入 Discord 实时交流,或在 GitHub 讨论组异步交流。

贡献

想为 magic - trace 做贡献,可先阅读构建说明,配置编辑器,浏览代码库,在问题跟踪器找入门项目。

隐私政策

magic - trace 不会将代码及派生内容(包括追踪信息)发送到任何地方,`magic - trace.org` 是 Perfetto 轻度修改版本,在浏览器运行,不会发送追踪信息,担心未来变化可搭建本地版 Perfetto UI 使用。

致谢

Tristan Hume 是 magic - trace 原作者,在 Jane Street 工作时编写,目前由 Jane Street 维护。感谢英特尔推广 Intel PT 技术,感谢 perf 开发者,`magic - trace.org` 是 Perfetto 分支,感谢 Google 相关人员,magic - trace 设计受许多现有技术影响,列出了参考资料。

脚注

1. perf 也能实现类似功能,但大多数人不这么用,magic - trace 通过 perf 驱动 Intel PT。2. 比 Broadwell 新的处理器也可用,但不常测试,时间分辨率约 1 微秒。3. https://github.com/actions/upload - artifact/issues/38

http://www.jsqmd.com/news/876870/

相关文章:

  • 如何利用 Taotoken 的模型广场与统一计费为 AIGC 应用快速迭代提供支持
  • 终极实战指南:深度构建AKShare财经数据接口库的完整文档体系
  • 2026广东职称评审机构排名推荐哪个好? - 资讯纵览
  • 量子时间最优控制:基于几何与Cartan分解的常数θ法解析
  • 2026年论文AI率爆表别慌!毕业生实测10个降AI率工具,谁是真神器?内附免费降AI率干货 - 降AI实验室
  • 佛山黄金回收靠谱之选,福运来免费上门足不出户安心变现 - 黄金回收
  • 3个颠覆性技巧:让明日方舟桌宠在NVIDIA显卡上流畅如丝
  • 嵌入簇展开(eCE):机器学习驱动的多元合金化学降维建模实战
  • 如何利用Gifsicle高效优化GIF动画并提升Web性能
  • 2026 年 5 月Hasee神舟全国售后服务网点地址核验报告 - GrowthUME
  • Tiktokenizer终极指南:三步掌握OpenAI Token可视化分析
  • 2026年东莞黄金回收口碑榜出炉,福运来凭旧金饰实力登顶 - 黄金回收
  • 2026年重庆三轮摩托车厂家客户满意:最新权威排名与专业指南。 - GrowthUME
  • 终极窗口调整指南:如何用WindowResizer解决Windows窗口尺寸限制难题
  • 昇腾NPU上的神经网络算子库,如何选型?
  • Serilog 干净的日志输出
  • 高效下载B站4K高清视频:bilibili-downloader完全指南
  • 终极文档下载教程:30+平台一键免费保存,告别繁琐下载流程
  • 盘点贵州口碑十佳旅行社 综合实力出众当属贵阳美途说 - 美途说
  • FFXIV TexTools:简单上手的《最终幻想14》模组管理终极方案
  • 2026年成都黄金回收口碑榜出炉,福运来凭旧金饰实力登顶 - 黄金回收
  • Warcraft Helper:让经典魔兽争霸3在现代Windows系统流畅运行
  • 长期使用Taotoken聚合API的稳定性与路由容灾体验
  • 终极免Root SIM卡国家码修改指南:Nrfr如何帮你突破区域限制
  • 中山户外厨房燃气烧烤炉生产厂家 - GrowthUME
  • 从长方形像素到正方形网格:手把手教你为Sentinel-1数据计算最合适的Multi-look参数
  • DLSS Swapper终极指南:简单快速免费的游戏DLSS智能管理工具
  • 2026年实测5种主流降AI方案,轻松应对查重系统升级及AIGC走红 - 降AI实验室
  • 深度解析Adobe-GenP通用补丁:破解Adobe Creative Cloud许可证验证的技术架构与实战指南
  • 5分钟实现位图到矢量图转换:Potrace多色彩矢量化技术深度解析