2011-08-31 35 views
5

Tôi đang gặp sự cố khi gỡ lỗi mã của mình. Một trong những AsyncTask của tôi ném một RuntimeException, nhưng tôi không biết dòng nào trong mã của tôi chịu trách nhiệm về điều này. Vì tôi mới sử dụng Eclipse và Java nói chung, tất cả điều này khá là khó hiểu với tôi.Làm cách nào để gỡ lỗi đúng cách Java (Android) bằng Eclipse?

Cửa sổ gỡ lỗi của Eclipse cho tôi biết rằng AsyncTask của tôi đã bị tạm ngưng do RuntimeException. Dưới đây, có ba dòng chỉ ra một số dòng mã nhất định. Tuy nhiên, những dòng này không tồn tại trong mã của tôi, đó là lý do tại sao tôi không biết nguyên nhân khiến ứng dụng của tôi gặp sự cố. Tôi có thiếu thứ gì đó cần thiết về gỡ lỗi trong Java/Android không?

Đây là ba dòng mà tôi đang đưa ra, bằng cách này:

ThreadPoolExecutor.runWorker(ThreadPoolExecutor$Worker) line: 1086 
ThreadPoolExecutor$Worker.run() line: 561 
Thread.run() line: 1096 

Làm sao tôi phải làm việc với điều đó? Trợ giúp sẽ được đánh giá cao.

+0

Các đường là đường xếp chồng được in. Sử dụng logcat để xem thông tin chi tiết hơn. – Ricky

Trả lời

1

trong ddms bạn có thể nhận được thông báo liên quan đến lỗi, cảnh báo hoặc loại thư khác vào cửa sổ logcat nếu bạn không thể tìm thấy logcat trong ddms rồi chuyển đến menu Window-> Show View -> logcat bấm vào đó và bạn sẽ có thể nhìn thấy tin nhắn bây giờ trong cùng một ddms bạn cũng nhận được cửa sổ thiết bị từ đó chọn thiết bị cho bạn có thể gỡ lỗi hoặc nhận được tin nhắn từ thiết bị đó vào logcat.

bây giờ kiểm tra bằng cách này bạn có thể tìm thấy chi tiết lỗi của bạn vào này chi tiết logcat

1

Bạn đang sử dụng tốt nhất logcat - điều này sẽ hiển thị các stacktrace và lỗi nâng lên. Tôi đã không bao giờ có thành công lớn bước qua các mã trong DDMS nhưng với các lỗi hiển thị trong logcat nó thường khá dễ dàng để làm việc ra lý do tại sao lỗi được nâng lên.

Xem câu trả lời của Pratik để mở logcat nếu nó không hiển thị trong Eclipse.

+0

Không, chúng tôi chỉ có dòng bằng cách gỡ lỗi như chúng ta có trong Visual Studio? Nó rất khó chịu khi sử dụng logcat. – Ubaid

0

Rajeev đã làm đúng - khi bạn đặt điểm ngắt trên một ngoại lệ, trình gỡ lỗi sẽ phá vỡ trên dòng mà ném nó, không phải là dòng bắt được nó. Bằng cách này, bạn có thể thấy điều gì gây ra ngoại lệ.

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