我是 Android 开发新手。我想分析我的应用程序的性能。所以我通过添加以下代码生成了一个日志文件(.trace) -
`// start tracing to "/sdcard/calc.trace"
Debug.startMethodTracing("calc");
// ...
// stop tracing
Debug.stopMethodTracing();`
现在,我有了一个 calc.trace 文件。但我想将此文件解析为 sql 格式,以便我可以使用高级查询从数据中提取信息。我怎样才能做到这一点?
您可以使用以下 ruby 代码解析 (.)trace 文件,该代码使用正则表达式将数据解析为 (.)sql 文件。它还提供了一个查询,用于将数据插入到您选择的 SQL 数据库中。
但在此之前使用以下命令将二进制跟踪日志转换为txt文件
/pathTotraceview/trceview -r 文件名.trace > 文件名.txt
然后保存并运行以下代码。
#!/usr/bin/env ruby
@values = Array.new
STDIN.read.split("\n").each do |a|
if a =~ /(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s([\w+.$]+)/
id = $1
tstart = $2
tend = $3
gstart = $4
gend = $5
excl = $6
incl = $7
meth = $8
@values << "(#{id},#{tstart},#{tend},#{gstart},#{gend},#{excl},#{incl},'#{meth}')"
end
end
puts "INSERT INTO table_name(pid,tstart,tend,gstart,gend,excl,incl,meth) values"
puts "#{@values.join(" , ")};"
要使用此文件,请将其作为 toSQL.rb 或任何其他名称存储在您的工作目录中,并在终端中使用以下命令来生成 sql 转储:
cat 跟踪文件名.txt | ./toSQL.rb > 文件名.sql
您可以使用名为 Trace Processor 的工具在 Android 跟踪文件上运行 sql 查询 https://perfetto.dev/docs/quickstart/trace-analysis