2011-01-22 22 views
27

Tôi đang chạy ADT (Công cụ phát triển Android) trong Eclipse và xác minh rằng trình gỡ lỗi của tôi đang hoạt động bằng cách đặt điểm ngắt trong MainMenu.oncreate (class Activity). Nhưng khi tôi đặt nó ở dòng đầu tiên của AsyncTask.doInBackground, nó không bao giờ chạm vào nó. Tôi biết nó đang chạy bởi vì tôi đặt một tuyên bố đăng nhập trong AsyncTask và nó xuất hiện trong LogCat. Bất kỳ trợ giúp nào sẽ được đánh giá cao vì tôi thích trình gỡ lỗi hơn quá trình ghi nhật ký.Làm cách nào để sử dụng trình gỡ rối Eclipse trong AsyncTask khi phát triển cho Android?

phiên bản của tôi:

Eclipse SDK Version: 3.6.1 
Build id: M20100909-0800 

alt text

+0

Bạn có gỡ lỗi = True trong tệp kê khai của mình không? – Falmarri

+0

Có, tôi đã trong tệp AndroidManifest.xml. Cảm ơn –

+0

Tôi chỉ phát hiện ra rằng nếu tôi đặt một số 'Log.d()' trong 'doInBackground()' mà trình gỡ rối đột nhiên bắt đầu nhấn breakpoint !! –

Trả lời

69

Đặt đoạn mã sau vào đầu doInBackground:

android.os.Debug.waitForDebugger();

Sau đó, khi bạn đặt một breakpoint ở chỗ chủ đề, nhật thực toàn phần sẽ tìm thấy nó.

+0

Cảm ơn, điều này đã làm các trick. –

+1

Như một lưu ý, khi ** không ** gỡ lỗi, tôi phải bình luận dòng này để nó chạy. – Suragch

+0

Tôi có thể thấy rằng đây rõ ràng là phương pháp để có thể làm điều này, nhưng tôi không quản lý để đạt các điểm ngắt ngay cả sau khi đặt này vào đầu doInBackground. Có ai có bất kỳ ý tưởng tại sao điều này có thể được? –

9

ngoài câu trả lời Sargas, bởi vì trong chế độ Run bạn có thể nhận được một lỗi nếu bạn quên nhận xét dòng đó, bạn có thể sử dụng như sau:

if(android.os.Debug.isDebuggerConnected()) 
    android.os.Debug.waitForDebugger(); 

nên nó sẽ chăm sóc của chính nó.

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