# RheaTrace
**Repository Path**: mirrors/RheaTrace
## Basic Information
- **Project Name**: RheaTrace
- **Description**: btrace(又名 RheaTrace) 是一个基于 Systrace 实现的高性能 Android trace 工具,它支持在 App 编译期间自动注入自定义事件,并使用 bho
- **Primary Language**: C/C++
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: https://www.oschina.net/p/rheatrace
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 3
- **Created**: 2021-12-23
- **Last Updated**: 2025-08-16
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# btrace 3.0



[English](./README.md)
[btrace for Android](#btrace-for-android)
[btrace for iOS](#btrace-for-ios)
## 重磅更新
此次更新,我们重磅推出 btrace 3.0 版本,提出了业界首创的同步抓栈的 Trace 采集方案,实现了高性能的 Trace 采集。此外,新版本在支持 Android 系统的基础上,新增了对 iOS 系统的全面支持。
## btrace for Android
### 接入
在项目 app/build.gradle 文件中添加如下依赖:
``` groovy
dependencies {
if (enable_btrace == 'true') {
implementation 'com.bytedance.btrace:rhea-inhouse:3.0.0'
} else {
implementation 'com.bytedance.btrace:rhea-inhouse-noop:3.0.0'
}
}
```
在项目根目录 gradle.properties 文件中增加 enable_btrace 开关:
```
# 需要打 Trace 包的时候把这个开关值改为 true
enable_btrace=false
```
在应用 Application 的 `attachBaseContext()` 方法中增加如下初始化逻辑:
``` java
public class MyApp extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
// 当 enable_btrace=false 时集成的是 rhea-inhouse-noop,此时的 init() 方法里没有任何逻辑
RheaTrace3.init(base);
}
}
```
### 使用
1. 确保电脑已集成 adb 与 Java 环境。
2. 连接手机至电脑,并保证可被 adb devices 识别。
3. 安装集成 btrace 3.0 的 APK 至手机。
4. 下载下方“脚本版本”中的最新脚本至电脑。
5. 在电脑脚本所在目录执行如下命令。
```shell
java -jar rhea-trace-shell.jar -a ${your_package_name} -t 10 -o output.pb -r sched
```
6. trace 产物使用 https://ui.perfetto.dev/ 即可打开分析。
#### 脚本版本
| 版本号 | 发布日期 | 脚本 | 更新说明 |
| ---|------------|--------------------------------| ---|
| 3.0.0 | 2025-06-3 | [rhea-trace-shell-3.0.0.jar](https://oss.sonatype.org/service/local/repositories/releases/content/com/bytedance/btrace/rhea-trace-processor/3.0.0/rhea-trace-processor-3.0.0.jar) | 3.0 首次发布 |
#### 参数说明
##### 必选参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| -a $applicationName|N/A|指定您的 App 的包名|
##### 可选参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| -o $outputPath | ${applicationName}_yyyy_MM_dd_HH_mm_ss.pb | 指定产物 trace 保存路径,默认值会根据 app 包名和当前时间戳自动生成 |
| -t $timeInSecond | 5 |指定这次采集的时长,单位是秒。
注意:在 MacOS 上不指定采集时间会进入交互式采集模式,此时通过按下回车键结束采集;当前 Windows 不支持交互式采集模式,必须指定采集时长。 |
| -m $mappingPath | | 如果是 Release 的混淆包,需要指定解混淆的 mapping 文件
注意:这里不再是 btrace 2.0 时期的 methodMapping 文件,是 proguard 生成的 mapping 文件。
| -mode $mode | 根据设备而定|指定采集 Trace 的模式,目前支持两种模式: