Nếu bạn đang chạy Android 4. 2. 2 trở lên, bạn có thể thấy hộp thoại sau khi kết nối thiết bị của mình với PC đang chạy RAD Studio
Nhấp vào OK để cho phép gỡ lỗi USB trên PC của bạn. Nếu bạn vô tình nhấp vào Hủy, hãy ngắt kết nối thiết bị của bạn khỏi PC và kết nối lại để hộp thoại hiển thị lại trên thiết bị của bạn
Xử lý sự cố
Nếu thiết bị Android của bạn không được RAD Studio hoặc Trình quản lý thiết bị hệ thống phát hiện chính xác, hãy làm theo các bước ở trên để xác minh rằng tính năng gỡ lỗi USB đã được bật
Chế độ nhà phát triển trong điện thoại Android cho phép sao chép các ứng dụng mới được lập trình qua USB sang thiết bị để thử nghiệm. Tùy theo phiên bản HĐH và các tiện ích đã cài đặt, phải bật chế độ để lập trình viên đọc nhật ký nội bộ. Xem Android
Gỡ lỗi là một trong những phần thiết yếu trong cuộc sống hàng ngày của nhà phát triển. Chúng tôi luôn cố gắng viết mã chống đạn và các ứng dụng không có lỗi nhưng để làm được điều này, chúng tôi phải sửa mọi lỗi mà đôi khi rất khó phát hiện trong mã. Gỡ lỗi cho phép bạn xem qua từng dòng mã, đánh giá các biến, phương thức của ứng dụng và mã của bạn hoạt động tốt như thế nào. Dễ dàng tìm thấy lỗi nhỏ trong các đoạn mã lớn. Trong bài viết này, chúng ta sẽ đi qua các mẹo và thủ thuật cơ bản để gỡ lỗi ứng dụng Android
Bắt đầu chế độ gỡ lỗi
Khi bạn muốn bắt đầu chế độ gỡ lỗi, trước tiên hãy đảm bảo thiết bị của bạn được thiết lập để gỡ lỗi và được kết nối với USB, đồng thời mở dự án của bạn trong Android Studio [AS] và chỉ cần nhấp vào biểu tượng Gỡ lỗi
Gỡ lỗi bằng Nhật ký
Cách dễ nhất để gỡ lỗi mã của bạn là sử dụng Nhật ký. Đây là tiện ích cho phép bạn gửi đầu ra nhật ký, sau đó bạn có thể xem trong Logcat ở dạng AS. Bạn thậm chí không cần chạy ứng dụng của mình ở chế độ gỡ lỗi để thực hiện việc này. Đơn giản chỉ cần sử dụng Android. sử dụng. Đăng nhập kết hợp với một trong các phương pháp sau. Nhật ký. v[], Nhật ký. d[], Nhật ký. i[], Nhật ký. w[], Nhật ký. e[] hoặc Nhật ký. wtf[]. Tất cả đều sử dụng 2 tham số chuỗi. TAG và tin nhắn của bạn. Bạn cũng có thể chuyển Throwable làm tham số thứ ba, tham số này sẽ ghi nhật ký TAG, tin nhắn và ngoại lệ của bạn. Bằng cách sử dụng các phương pháp khác nhau — mức độ chi tiết [VERBOSE, GỠ LỖI, THÔNG TIN, CẢNH BÁO, LỖI] — sau này bạn có thể lọc nhật ký hoặc thậm chí thiết lập AS và tùy chỉnh màu văn bản Logcat và nền văn bản cho từng cấp độ
Đây là một ví dụ đơn giản
private static final String TAG = “MyActivity”;
...
button.setOnClickListener[new OnClickListener[]{
@Override
public void onClick[View view]{
Log.d[TAG, “Click on button”];
}
}
Verbose không bao giờ được biên dịch khi bạn đang thực hiện bản dựng phát hành ứng dụng của mình, nhưng bạn có thể thực hiện việc này trong quá trình phát triển. Các bản ghi gỡ lỗi được lưu giữ trong thời gian chạy, trong khi các bản ghi Lỗi, Cảnh báo và Thông tin luôn được lưu giữ trong. Do đó, nếu bạn sử dụng bất kỳ nhật ký nào trong số này cho mục đích phát triển, đừng quên xóa chúng, đặc biệt nếu bạn ghi một số dữ liệu nhạy cảm. Tốt hơn nữa, hãy bọc các nhật ký này thành câu lệnh if
Ví dụ
if [BuildConfig.DEBUG] {
Log.d[“Sensitive message”];
}
Hoặc tạo trường BuildConfig của riêng bạn và thiết lập nó trong tệp lớp
logcat
Tại STRV, chúng tôi sử dụng tiện ích Logcat, xử lý câu lệnh if trong số những thứ khác. Kiểm tra nó ra ở đây. trong xây dựng. gradle, chúng tôi có LOGS thuộc tính cấu hình bản dựng, có thể được đặt thành true trong loại bản dựng gỡ lỗi và thành false trong loại bản phát hành. Logcat luôn kiểm tra thuộc tính LOGS trước khi ghi bất kỳ tin nhắn nào. Sau đó, bạn không phải lo lắng về việc gói nó trong bất kỳ câu lệnh if nào
Chỉ cần gọi phương thức
Logcat.d[“Your message here”];
Bạn cũng có thể đặt các tham số khác trong lớp này. Thông báo có thể bao gồm "Vị trí mã". Điều này có nghĩa là nó hiển thị tên của phương thức, dòng mã và cả chuỗi nơi Logcat được gọi. Một điều thú vị khác về Logcat là bạn có thể ghi các tin nhắn được định dạng. Vì vậy, thay vì
Logcat.d[“Message with index: ” + someInteger]
chúng tôi sử dụng
Logcat.d[“Message with index: %d”, someInteger]
Phương pháp này cho phép bạn có bao nhiêu tham số tùy thích
Điểm dừng
Khi bạn đang ở điểm mà bạn không thể sửa lỗi chỉ bằng cách xem mã của mình, đã đến lúc sử dụng các điểm dừng. Điểm dừng cho phép bạn tạm dừng thực thi ứng dụng của mình tại một dòng mã cụ thể
Thiết lập điểm dừng
Chỉ cần đi tới tệp mà bạn muốn gỡ lỗi, tìm một dòng mã mà bạn muốn bắt đầu và nhấp vào thanh bên ở bên trái của dòng này. Bạn sẽ thấy một chấm đỏ ở đó. Sau đó chạy ứng dụng của bạn ở chế độ gỡ lỗi hoặc đính kèm trình gỡ lỗi [xem bên trên]
Bạn cũng có thể tùy chỉnh cấu hình điểm dừng của mình. Thiết lập điểm dừng của bạn bằng cách nhấp chuột phải vào chấm đỏ và sau đó nhập điều kiện khi bạn muốn kích hoạt điểm dừng này. Rất tiện lợi khi đoạn mã này được gọi nhiều lần nhưng bạn muốn dừng tại một điểm cụ thể. Bạn cũng có thể mở cài đặt điểm ngắt — Xem Điểm ngắt
Gỡ lỗi với các điểm dừng
Android Studio sẽ đánh dấu bất kỳ dòng mã nào mà ứng dụng dừng tại đó khi điểm ngắt được nhấn. Phần khó bắt đầu trong cửa sổ Gỡ lỗi - kiểm tra mọi biến hiện được phân bổ và đi từng dòng hoặc nhảy đến một điểm dừng khác. Mở rộng cây của một đối tượng và bạn sẽ có thể xem tất cả các giá trị trường của nó. Nếu đó là một đối tượng tùy chỉnh, nó sẽ hiển thị cùng giá trị với phương thức toString[]. Nếu bạn quan tâm đến một trường cụ thể trong đối tượng này hoặc bạn muốn một số kết quả dễ đọc, hãy ghi đè phương thức toString[]. Bạn sẽ không cần mở cây, bạn sẽ thấy kết quả bên cạnh gốc cây.
Điều thú vị là nếu bạn có bitmap, bạn cũng có thể nhìn thấy hình ảnh trong khi gỡ lỗi.
Bạn cũng có thể thiết lập đồng hồ để chỉ xem các biến bạn quan tâm. Nhưng bạn cũng có thể đánh giá bất kỳ biểu thức nào tại điểm thực thi hiện tại của mình bằng cách sử dụng các biến và phương thức được phân bổ [hoặc thậm chí các đối tượng và phương thức khác từ đối tượng cụ thể đó]. Bạn cũng có thể đánh giá các biểu thức trong dạng xem Đánh giá biểu thức
Bạn có thể mở chế độ xem Biến bằng cách nhấp vào biểu tượng
Khi bạn đã tìm ra điều gì đang xảy ra tại thời điểm cụ thể này, đã đến lúc chuyển sang bước tiếp theo. Ở đây bạn có vài lựa chọn
Bước qua — chuyển đến dòng mã tiếp theo mà không cần nhập phương thức ở dòng hiện tại
Bước vào — chuyển đến dòng đầu tiên mà phương thức bên trong được gọi ở dòng hiện tại