2012-05-24 29 views
5

Tôi đã xây dựng một nhị phân excutable từ mã C++ tinh khiết và nó sẽ nhắc lỗi thời gian khi chạy trên thiết bị Android.làm thế nào để gỡ lỗi mã nguồn gốc thuần túy trên Android?

Tôi làm cách nào để gỡ lỗi mã gốc thuần túy cho Android? Dường như các phương thức hiện có không dành cho mã thuần túy thuần túy.

+0

Tôi khuyên bạn nên đọc http://stackoverflow.com/questions/how-to-ask và thử hỏi lại để cải thiện khả năng của chúng tôi để giúp bạn nhận được câu trả lời. –

+0

Cảm ơn. Tôi đã tìm được giải pháp. Đăng ở đây và hy vọng nó có thể giúp người khác làm phiền bởi vấn đề này. – behe

Trả lời

0

Android hỗ trợ việc sử dụng GDB. Tuy nhiên, tôi nên lưu ý rằng nếu bằng "pure C++", bạn có nghĩa là không có Java trong ứng dụng, điều này là không được phép (mặc dù bạn chắc chắn có thể làm điều đó). Xem the NDK page.

3

Bước 1: Đặt gdbserver và bạn unstrippedcó nguồn gốc thực thi nhị phân (giả sử nó được đặt tên testexec) trên giả lập Android. Ví dụ. bạn có thể đặt nó dưới thư mục/dữ liệu/dữ liệu/thử nghiệm. Và sử dụng lệnh chmod để thêm quyền cho họ.

Bước 2: Khởi động trình gỡ lỗi gdb. Và bước này bao gồm sau tiểu bước sau:

Bước 2.1: Bắt đầu gỡ rối gdb của giả lập bằng cách gõ lệnh trên thiết bị đầu cuối máy chủ của bạn:

adb shell /data/data/test/gdbserver 10.0.2.2:1234 /data/data/test/testexec 

Các giả lập sau đó sẽ lắng nghe trên cổng 1234.

Bước 2.2: Kết nối gỡ rối gdb của máy cục bộ với gdbserver của giả lập:

telnet localhost 5554 

Nó sẽ nhắc nhở:

Android Console: gõ 'giúp đỡ' cho một danh sách các lệnh

OK

Sau đó, đầu vào:

redir add tcp:1234:1234 

để cho phép dữ liệu chuyển hướng và sau đó nhập

exit 

Bước2.3: Khởi động trình gỡ lỗi gdb của máy cục bộ. Input:

arm-linux-androideabi-gdb.exe YOUR_ EXECUTABLE_PATH_ON_LOCAL_MACHINE\testexec 

Sau đó, nhập vào

target remote localhost:1234 

để kết nối với gdbserver.

Cuối cùng, hãy tận hưởng việc gỡ lỗi của bạn!

+0

bạn có biết cách kết nối telnet với thiết bị thật không - không phải trình mô phỏng? tôi đã cố gắng để truy vấn cho ip với 'adb shell ip -f inet addr show' nhưng không thể kết nối – Chris

Các vấn đề liên quan