Kiểm tra nhật ký theo dõi bằng Traceview

Traceview đã ngừng hoạt động. Nếu đang sử dụng Android Studio 3.2 trở lên, bạn nên sử dụng Trình phân tích CPU để kiểm tra các tệp .trace bằng cách đo lường ứng dụng của bạn với loại Debug, ghi lại các dấu vết phương thức mới, lưu .trace và kiểm tra mức sử dụng CPU theo thời gian thực của các quy trình ứng dụng.

Traceview là một công cụ cung cấp bản trình bày dạng đồ họa về các nhật ký theo dõi. Bạn có thể tạo nhật ký bằng cách đo lường mã của mình với loại Debug. Phương pháp theo dõi này rất chính xác vì bạn có thể chỉ định chính xác vị trí bạn muốn bắt đầu mã và ngừng ghi dữ liệu theo dõi. Nếu bạn chưa tạo các nhật ký theo dõi này và lưu nhật ký từ thiết bị thông minh vào máy cục bộ của bạn, hãy chuyển đến Tạo nhật ký theo dõi bằng cách đo lường ứng dụng của bạn. Việc kiểm tra các nhật ký này bằng cách sử dụng Traceview giúp bạn gỡ lỗi ứng dụng và lập hồ sơ về hiệu suất của ứng dụng đó.

Mẹo: Bạn có thể sử dụng dmtracedump từ dòng lệnh để tạo sơ đồ ngăn xếp lệnh gọi đồ họa của tệp nhật ký theo dõi.

Nếu không cần xem nhật ký theo dõi mà bạn đã ghi lại bằng cách đo lường ứng dụng với loại Debug, bạn có thể sử dụng trình phân tích CPU có trong Android Studio phiên bản 3.0 trở lên để kiểm tra các chuỗi ứng dụng và ghi lại các dấu vết phương thức.

Mở nhật ký theo dõi bằng Traceview

Để mở nhật ký theo dõi bằng Traceview từ Android Studio, hãy tiến hành như sau:

  1. Khởi động Android Device Monitor.
  2. Trong Android Device Monitor, hãy chọn Tệp > Mở tệp.
  3. Chuyển đến tệp .trace mà bạn muốn kiểm tra.
  4. Nhấp vào Mở.

Lưu ý: Nếu bạn đang cố xem nhật ký theo dõi của một ứng dụng được tạo bằng tính năng rút gọn mã (chẳng hạn như bản phát hành), một số phương thức và tên thành viên có thể bị xáo trộn. Bạn có thể dùng tệp ProGuard mapping.txt để tìm ra những tên ban đầu chưa bị xáo trộn. Để biết thêm thông tin về tệp này, hãy xem phần Giải mã dấu vết ngăn xếp đã bị xáo trộn.

Lưu ý: Chúng tôi đã ngừng sử dụng traceview chạy từ dòng lệnh.

Tổng quan về Traceview

Sau khi mở một nhật ký theo dõi, Traceview hiển thị dữ liệu nhật ký bằng hai ngăn sau:

  • Ngăn tiến trình mô tả thời điểm mỗi chuỗi vào và thoát một phương thức
  • Một ngăn hồ sơ tóm tắt cách thực thi từng chuỗi trong khoảng thời gian của nhật ký theo dõi

Các phần dưới đây cung cấp thông tin bổ sung về các ngăn kết quả traceview.

Ngăn tiến trình

Hình 1 minh họa cận cảnh ngăn tiến trình. Mỗi hoạt động thực thi của chuỗi được hiển thị trong một hàng riêng và thời gian trôi qua sẽ tăng lên về bên phải. Mỗi phương thức được hiển thị với nhiều màu sắc. Các đường mỏng bên dưới hàng đầu tiên hiển thị các phần tử con (từ lúc nhập đến thoát) của phương thức đã chọn.

Ngăn tiến trình của Traceview

Hình 1. Ngăn tiến trình của Traceview.

Ngăn hồ sơ

Như minh họa trong hình 2, ngăn hồ sơ cung cấp danh sách từng phương thức mà hệ thống đã thực thi trong khoảng thời gian của nhật ký theo dõi và thời gian thực thi các phương thức đó. Một phương thức gọi phương thức khác thì được gọi là mẹ và các phương thức mà mẹ gọi là con của nó. Khi bạn chọn một phương thức bằng cách nhấp vào nó, phương thức này sẽ hiển thị cả phần tử mẹ và phần tử con của nó dưới hai nút riêng biệt.

Đối với mỗi phương thức (nút cấp cao nhất), bảng này sẽ hiển thị cả thời gian đưa vào và độc quyền (tính bằng mili giây) cũng như tỷ lệ phần trăm của tổng thời gian. Thời gian độc quyền là thời gian dành để thực thi mã riêng của phương thức, còn thời gian đưa vào là thời gian dành cho việc thực thi mã riêng của phương thức cộng với thời gian thực thi mã con của phương thức. Thông tin về thời gian cũng được báo cáo theo thời gian CPU và thời gian thực. Thời gian của CPU chỉ xem xét thời gian mà chuỗi đang chủ động sử dụng thời gian của CPU và thời gian thực cung cấp thông tin thời gian tuyệt đối từ thời điểm ứng dụng của bạn nhập phương thức cho đến khi thoát khỏi phương thức đó, bất kể chuỗi đó đang hoạt động hay đang ngủ.

Đối với mỗi nút cấp cao nhất trong ngăn hồ sơ, cột Cuộc gọi + Rec, Cuộc gọi/Tổng số trong bảng (không hiển thị trong hình 2) sẽ báo cáo số lượng lệnh gọi tới và số lệnh gọi lặp lại. Hoặc, đối với các phương thức mẹ và phương thức con, cột này cho biết số lệnh gọi trong đó phương thức là con hoặc mẹ của phương thức trong nút cấp cao nhất.

Ngăn hồ sơ Traceview.

Hình 2. Ngăn hồ sơ Traceview.

Vấn đề đã biết trên Traceview

Việc ghi nhật ký Traceview không xử lý tốt các chuỗi, dẫn đến những vấn đề sau:

  • Nếu một chuỗi thoát ra trong quá trình lập hồ sơ, thì tên của chuỗi đó sẽ không được phát (cố định trong Android 5.1 trở lên);
  • Máy ảo sẽ sử dụng lại mã nhận dạng chuỗi. Nếu một chuỗi ngừng và một chuỗi khác bắt đầu, thì chuỗi đó có thể nhận được cùng một mã.