Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Sử dụng Trình gỡ lỗi

Trang này chi tiết sử dụng LLĐB hoặc GDB cho sự phát triển hệ điều hành. Đối với phát triển ứng dụng, xem gỡ lỗi ứng dụng của bạn thay vào đó, điều này giải thích làm thế nào để sử dụng Studio GUI Android (dựa trên LLĐB).

GDB không được dùng nữa và sẽ sớm bị xóa. Nếu bạn đang chuyển từ GDB để LLĐB, có lẽ bạn nên bắt đầu bằng cách đọc các LLĐB Tutorial . Nếu bạn là người dùng chuyên gia GDB, các GDB để LLĐB đồ lệnh là rất hữu ích trong khi chuyển đổi.

Điều kiện tiên quyết

Để sử dụng trình gỡ lỗi:

  • Thiết lập môi trường xây dựng với bình thường envsetup.sh lệnh.
  • Chạy cùng lunch lệnh bạn sử dụng khi xây dựng.

Để được trợ giúp nhiều hơn với việc thiết lập môi trường của bạn, xem Thiết lập môi trường .

Gỡ lỗi các ứng dụng hoặc quy trình đang chạy

Để kết nối với một ứng dụng đang chạy hoặc daemon bản xứ, sử dụng gdbclient.py với một PID. Ví dụ: để gỡ lỗi quá trình với PID 1234, hãy chạy điều này trên máy chủ:

gdbclient.py -p 1234

Tập lệnh thiết lập chuyển tiếp cổng, bắt đầu sơ khai gỡ lỗi từ xa thích hợp trên thiết bị, khởi động trình gỡ lỗi trên máy chủ, cấu hình nó để tìm ký hiệu và kết nối với sơ khai gỡ lỗi từ xa.

Gỡ lỗi khởi động quy trình gốc

Để gỡ lỗi một quá trình khi nó bắt đầu, sử dụng gdbclient.py với -r tùy chọn. Ví dụ, để debug ls /bin , chạy trên máy chủ:

gdbclient.py -r /system/bin/ls /bin

Sau đó, nhập continue tại của debugger nhắc.

Gỡ lỗi khởi động ứng dụng

Đôi khi bạn muốn gỡ lỗi một ứng dụng khi nó bắt đầu, chẳng hạn như khi có một vụ tai nạn và bạn muốn bước qua mã để xem những gì đã xảy ra trước vụ tai nạn. Gắn công trình trong một số trường hợp, nhưng trong những trường hợp khác là không thể bởi vì các ứng dụng bị treo trước khi bạn có thể đính kèm. Các logwrapper phương pháp (sử dụng cho strace ) không phải lúc nào cũng làm việc vì các ứng dụng có thể không có quyền mở một cổng, và gdbserver kế thừa hạn chế đó.

Để gỡ lỗi khởi động ứng dụng, hãy sử dụng tùy chọn nhà phát triển trong Cài đặt để hướng dẫn ứng dụng đợi trình gỡ lỗi Java đính kèm:

  1. Tới Cài đặt> Tùy chọn nhà phát triển> Chọn ứng dụng debug và chọn ứng dụng của bạn từ danh sách, sau đó nhấn Chờ debugger.
  2. Khởi động ứng dụng, hoặc từ trình khởi chạy hoặc bằng cách sử dụng dòng lệnh để chạy:
    adb shell am start -a android.intent.action.MAIN -n APP_NAME/.APP_ACTIVITY
    
  3. Chờ ứng dụng tải và hộp thoại xuất hiện cho bạn biết ứng dụng đang đợi trình gỡ lỗi.
  4. Đính kèm gdbserver / gdbclient bình thường, bộ breakpoint, sau đó tiếp tục quá trình.

Để cho phép ứng dụng chạy, hãy đính kèm trình gỡ lỗi Java Debug Wire Protocol (JDWP) chẳng hạn như Java Debugger (jdb):

adb forward tcp:12345 jdwp:XXX  # (Where XXX is the PID
of the debugged process.)
jdb -attach localhost:12345

Gỡ lỗi các ứng dụng hoặc quy trình bị lỗi

Nếu bạn muốn debuggerd đình chỉ quá trình rơi để bạn có thể đính kèm một debugger, thiết lập thuộc tính thích hợp:

  • Sau Android 11
    adb shell setprop debug.debuggerd.wait_for_debugger true
    
  • Android 11 và thấp hơn
    adb shell setprop debug.debuggerd.wait_for_gdb true
    
  • Android 6.0 Marshmallow và thấp
    adb shell setprop debug.db.uid 999999
    

Vào cuối đầu ra tai nạn thông thường, debuggerd cung cấp sao chép và dán hướng dẫn trong logcat cho thấy làm thế nào để kết nối các chương trình gỡ rối cho quá trình rơi.

Gỡ lỗi không có ký hiệu

Đối với 32-bit ARM, nếu bạn không có biểu tượng, gdb có thể không xác định hướng dẫn thiết lập nó tháo (ARM hoặc Thumb). Để chỉ định tập lệnh được chọn làm mặc định khi thiếu thông tin về biểu tượng, hãy đặt thuộc tính sau:

set arm fallback-mode arm  # or thumb

Gỡ lỗi bằng mã VS

LLĐB hỗ trợ gỡ lỗi mã nền tảng trên Visual Studio Mã . Bạn có thể sử dụng giao diện trình gỡ lỗi VS Code thay vì giao diện LLDB CLI để điều khiển và gỡ lỗi mã gốc đang chạy trên thiết bị.

Trước khi sử dụng VS Mã để gỡ lỗi, cài đặt các phần mở rộng CodeLLDB .

Để gỡ lỗi mã bằng VS Code:

  1. Đảm bảo rằng tất cả xây dựng hiện vật (ví dụ như ký tự) cần thiết để chạy gdbclient.py hoặc lldbclient.py có mặt.
  2. Chạy lệnh sau:
    lldbclient.py -p pid | -n proc-name |
    -r ... --setup-forwarding vscode ANY_OTHER_FLAGS

    Đây in một đối tượng JSON và lldbclient.py tiếp tục chạy. Điều này được mong đợi; không giết lldbclient.py chương trình.

  3. Trong tab gỡ lỗi trong VS Mã, chọn add cấu hình, sau đó chọn LLĐB: Tuỳ chỉnh Launch. Điều này mở ra một launch.json tập tin và thêm một đối tượng JSON mới vào danh sách.
  4. Xóa cấu hình trình gỡ lỗi mới được thêm vào.
  5. Sao chép đối tượng JSON in bằng lldbclient.py và dán nó vào đối tượng bạn chỉ cần xóa. Lưu các thay đổi.
  6. Để tải lại cửa sổ để cập nhật danh sách debugger, nhấn Ctrl + Shift + P và kiểu reload window .
  7. Chọn cấu hình mới debugger và nhấn chạy. Trình gỡ lỗi sẽ kết nối sau 10 đến 30 giây.
  8. Khi bạn gỡ lỗi done đang, đi đến chạy terminal lldbclient.py và nhấn Enter để kết thúc lldbclient.py chương trình.