Android Studio for Platform (ASfP) cung cấp một trình gỡ lỗi mạnh mẽ cho phép bạn:
- Chọn một thiết bị để gỡ lỗi.
- Đặt các điểm ngắt trong mã Java, Kotlin, C/C++ và Rust.
- Kiểm tra các biến và đánh giá biểu thức trong thời gian chạy.
Trước khi sử dụng trình gỡ lỗi, bạn phải cài đặt ROM bản dựng của mình sang một thiết bị hoặc trình mô phỏng.
Gỡ lỗi quy trình ứng dụng (Java/Kotlin)
Cách gỡ lỗi quy trình ứng dụng Java hoặc Kotlin:
Đặt điểm ngắt trong mã Java hoặc Kotlin trong ASfP.
Chọn Run > Attach Debugger to Android Process (Chạy > Đính kèm trình gỡ lỗi vào quy trình Android) trong trình đơn.
Trong hộp thoại Choose Process (Chọn quy trình), hãy nhớ đặt Debug type (Loại gỡ lỗi) thành Java Only (Chỉ Java).
Chọn thiết bị của bạn trong danh sách.
Chọn quy trình ứng dụng cụ thể mà bạn muốn gỡ lỗi.
Nhấp vào OK.
Tương tác với ứng dụng trên thiết bị để đạt được các điểm ngắt.
Gỡ lỗi quy trình hệ thống (C/C++)
Cách gỡ lỗi một quy trình hệ thống được viết bằng C hoặc C++:
Xác minh rằng bạn chỉ có một thiết bị hoặc trình mô phỏng đang chạy.
Mở cửa sổ dòng lệnh rồi chạy
adb roottừ thư mục gốc của AOSP:bash adb root
Đặt điểm ngắt trong mã C/C++ trong ASfP.
Chọn Run > Attach Debugger to Android Process (Chạy > Đính kèm trình gỡ lỗi vào quy trình Android) trong trình đơn.
Trong hộp thoại Choose Process (Chọn quy trình), hãy thay đổi Debug type (Loại gỡ lỗi) thành Native Only (Chỉ gốc) hoặc Dual (Java + Native) (Kép (Java + Gốc)).
Đánh dấu vào hộp Show all processes (Hiển thị tất cả quy trình) để xem các quy trình hệ thống.
Chọn thiết bị của bạn trong danh sách.
Chọn quy trình hệ thống cụ thể mà bạn muốn gỡ lỗi (chẳng hạn như
surfaceflingerhoặcsystem_server).Nhấp vào OK.
Tương tác với thiết bị để đạt được các điểm ngắt.
Gỡ lỗi Rust
ASfP hỗ trợ gỡ lỗi Rust bằng cách sử dụng Giao thức bộ điều hợp gỡ lỗi (DAP) với LLDB. Phần này trình bày cách thiết lập CodeLLDB làm Máy chủ bộ điều hợp gỡ lỗi và gỡ lỗi mã Rust trên máy chủ lưu trữ và trên thiết bị Android.
Thiết lập CodeLLDB làm Máy chủ bộ điều hợp gỡ lỗi
Tạo cấu hình Chạy/Gỡ lỗi Debug Adapter Protocol (Giao thức bộ điều hợp gỡ lỗi) mới:
- Chọn Run > Edit Configurations (Chạy > Chỉnh sửa cấu hình) trong trình đơn.
- Nhấp vào nút +.
- Chọn Debug Adapter Protocol (Giao thức bộ điều hợp gỡ lỗi).
Trong thẻ máy chủ, hãy nhấp vào tạo máy chủ mới.
Trong hộp thoại vừa mở, hãy nhấp vào Choose template (Chọn mẫu) rồi chọn CodeLLDB trong danh sách.
Sau khi bạn chọn mẫu CodeLLDB, máy chủ mới sẽ được thêm vào bằng một cấu hình được xác định trước.
- Bật tính năng theo dõi chi tiết bằng cách chọn Chi tiết trong trình đơn thả xuống Theo dõi.
- Thêm một biến môi trường chỉ định đường dẫn đến
lldb-servertrong các bản dựng sẵn nguồn Android:
LLDB_DEBUGSERVER_PATH=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/runtimes_ndk_cxx/x86_64/lldb-server ``` Replace `REPO_ROOT` with the absolute path to your Android source checkout. To find `CLANG_VERSION`, run the `get_clang_version.py` script from the root of your Android source tree: ```bash ./build/soong/scripts/get_clang_version.py- Không thay đổi phần
<<insert base directory>>.
Gỡ lỗi các tệp nhị phân Rust trên máy chủ
- Mở thẻ Configuration (Cấu hình) trong cấu hình Chạy/Gỡ lỗi Giao thức Bộ điều hợp gỡ lỗi.
- Chọn Launch (Chạy) làm Chế độ gỡ lỗi.
- Cập nhật Thư mục làm việc và chọn Tệp nhị phân mà bạn muốn gỡ lỗi.
- Nhấp vào OK để lưu cấu hình.
- Bắt đầu phiên gỡ lỗi bằng cách nhấp vào biểu tượng Gỡ lỗi bên cạnh cấu hình.
Trong lần đầu tiên bạn chạy, CodeLLDB sẽ tải xuống. Bạn sẽ thấy các dấu vết DAP trong bảng điều khiển. Các điểm ngắt được đặt trong mã Rust sẽ được thực hiện như dự kiến.
Gỡ lỗi các tệp nhị phân Rust trên thiết bị Android (Chế độ đính kèm)
Tìm PID: Xác định mã nhận dạng tiến trình (PID) của ứng dụng mà bạn muốn gỡ lỗi trên thiết bị Android.
Khởi động lldb-server trên thiết bị: Từ gốc của quá trình kiểm xuất cây nguồn Android, hãy chạy tập lệnh
lldbclient.py, thay thế<PID>bằng mã nhận dạng quy trình:lldbclient.py --setup-forwarding vscode-lldb -p <PID>Tập lệnh này sẽ đẩy
lldb-serverchính xác vào thiết bị, khởi động thiết bị, thiết lập tính năng chuyển tiếp cổng (cổng máy chủ lưu trữ 5039 đến thiết bị) và xuất cấu hình JSON DAP cần thiết cho các bước tiếp theo. Giữ cửa sổ dòng lệnh này mở.Khởi động Trình gỡ lỗi CodeLLDB trên máy chủ lưu trữ:
- Chuyển đến thư mục tiện ích CodeLLDB (mặc định:
~/.lsp4ij/dap/codelldb/extension/adapter). - Đặt các biến môi trường bắt buộc và khởi động máy chủ bộ chuyển đổi, thay thế
REPO_ROOTvàCLANG_VERSIONnhư được xác định trong quá trình thiết lập máy chủ:
# Sets PYTHONHOME env variable export PYTHONHOME=REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3 # Tell the dynamic linker where to find python libs export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/python3/lib # Starts the CodeLLDB Debugger Adapter server on port 1234 ./codelldb --liblldb REPO_ROOT/prebuilts/clang/host/linux-x86/CLANG_VERSION/lib/liblldb.so --port 1234- Chuyển đến thư mục tiện ích CodeLLDB (mặc định:
Định cấu hình ứng dụng ASfP DAP:
- Quay lại cấu hình Chạy/Gỡ lỗi Giao thức Bộ điều hợp gỡ lỗi trong ASfP.
- Chọn thẻ Cấu hình.
- Đặt Chế độ gỡ lỗi thành Đính kèm.
- Đặt Address thành
localhost. - Đặt Cổng thành
1234. - Dán đầu ra JSON từ lệnh
lldbclient.py(Bước 2) vào trường DAP parameters (JSON) (Tham số DAP (JSON)).
Nhấp vào Debug (Gỡ lỗi) để bắt đầu phiên gỡ lỗi.
Khắc phục sự cố
- Nếu bạn thấy lỗi
error: Connection shut down by remote side while waiting for reply to initial handshake packet, hãy kết thúc phiên gỡ lỗi hiện tại, rồi khởi động lạilldb-servertrên thiết bị và trình kết nối CodeLLDB trên máy chủ lưu trữ.