Phân tích một dấu vết ngăn xếp

Quy trình gỡ lỗi ứng dụng thường yêu cầu bạn phải thao tác với các dấu vết ngăn xếp. Dấu vết ngăn xếp được tạo khi ứng dụng của bạn gặp sự cố do lỗi hoặc ngoại lệ. Bạn cũng có thể in dấu vết ngăn xếp bất cứ lúc nào trong mã ứng dụng của mình bằng các phương thức như Thread.dumpStack().

Khi ứng dụng của bạn đang chạy ở chế độ gỡ lỗi trên một thiết bị được kết nối, Android Studio sẽ in và đánh dấu các dấu vết ngăn xếp trong khung hiển thị Logcat, như minh hoạ trong hình 1. Dấu vết ngăn xếp hiển thị danh sách các lệnh gọi phương thức dẫn đến một ngoại lệ được tạo ra, cùng với tên tệp và số dòng nơi xảy ra lệnh gọi.

Hình 1. Một dấu vết ngăn xếp trong Logcat.

Nhấp vào tên tệp được đánh dấu để mở các tệp này và kiểm tra nguồn của lệnh gọi phương thức. Nhấp vào nút Dấu vết ngăn xếp trên Dấu vết ngăn xếp dưới để di chuyển nhanh giữa các dòng dấu vết ngăn xếp hiện trong cửa sổ Logcat.

Mở dấu vết ngăn xếp từ các nguồn bên ngoài

Đôi khi, bạn muốn phân tích các dấu vết ngăn xếp được chia sẻ trong báo cáo lỗi, chứ không phải các dấu vết ngăn xếp mà bạn tìm thấy trong khi gỡ lỗi. Để phân tích dữ liệu từ Firebase Crashlytics, hãy sử dụng cửa sổ công cụ App Quality Insights (Thông tin chi tiết về chất lượng ứng dụng). Để phân tích dữ liệu từ các nguồn khác, chẳng hạn như dấu vết ngăn xếp được tạo trên thiết bị của người dùng từ Google Play Console, hãy làm theo các bước sau:

  1. Mở dự án của bạn trong Android Studio.

    Lưu ý: Đảm bảo mã nguồn bạn đang xem là của cùng một phiên bản ứng dụng đã tạo dấu vết ngăn xếp. Nếu mã đó có sự khác biệt, bạn sẽ nhận thấy các tên tệp và số dòng hoặc thứ tự các lệnh gọi trong dấu vết ngăn xếp và dự án của bạn không khớp nhau.

  2. Trong trình đơn Analyze (Phân tích), hãy nhấp vào Analyze Stacktrace (Phân tích dấu vết ngăn xếp).

    Cửa sổ Analyze Stack Trace (Phân tích dấu vết ngăn xếp)

    Hình 2. Cửa sổ Analyze Stacktrace (Phân tích dấu vết ngăn xếp).

  3. Dán văn bản dấu vết ngăn xếp vào cửa sổ Analyze Stacktrace (Phân tích dấu vết ngăn xếp) rồi nhấp vào OK.

Android Studio sẽ mở ra một thẻ <Stacktrace> mới như trong hình 3, với dấu vết ngăn xếp mà bạn đã dán trong cửa sổ Run (Chạy).

Cửa sổ Stacktrace (Dấu vết ngăn xếp)

Hình 3. Thẻ <Stacktrace> trong Android Studio.

Theo dõi bảng nhớ tạm để phát hiện các dấu vết ngăn xếp mới

Để cải thiện năng suất khi thường xuyên làm việc với các dấu vết ngăn xếp bên ngoài, bạn có thể cho phép Android Studio liên tục theo dõi bảng nhớ tạm của hệ thống để phát hiện các dấu vết ngăn xếp mới. Để thực hiện việc này, hãy làm theo các bước sau:

  1. Mở công cụ Analyze Stacktrace (Phân tích dấu vết ngăn xếp).
  2. Đánh dấu vào hộp đánh dấu Automatically detect and analyze thread dumps copied to the clipboard outside of IntelliJ IDEA (Tự động phát hiện và phân tích tổng quan trạng thái luồng được sao chép sang bảng nhớ tạm bên ngoài IntelliJ IDEA).
  3. Sao chép một dấu vết ngăn xếp trong ứng dụng khác (chẳng hạn như trong trình duyệt web) vào bảng nhớ tạm của hệ thống.

Khi bạn quay lại cửa sổ Android Studio, dấu vết ngăn xếp sẽ tự động mở ra trong cửa sổ Run (Chạy), vì vậy, bạn không phải dán dấu vết ngăn xếp này vào cửa sổ Analyze Stacktrace (Phân tích dấu vết ngăn xếp).