[Android] Debug ứng dụng - Tầm quan trọng đối với lập trình viên và một số thủ thuật cơ bản

Đăng bởi: Admin | Lượt xem: 1122 | Chuyên mục: Android

Debug ứng dụng là một kỹ năng rất quan trọng cho mọi lập trình viên. Debug là quá trình tìm kiếm ra lỗi hay nguyên nhân gây ra lỗi (bug ở đâu) để có hướng sửa lỗi (fix bug). Việc kiểm soát lỗi của rất nhiều các dòng code là việc không hề đơn giản với những người lập trình viên chưa có nhiều kinh nghiệm.


Cũng như các ngôn ngữ lập trình khác, hay bất kể ai lập trình cũng đều phải biết cách debug. Debug ứng dụng là một kỹ năng rất quan trọng cho mọi lập trình viên. Đó là lý do mình trình bày về cách debug trong android studio trước khi bắt tay vào học code ứng dụng.

1. Cách sử dụng công cụ Android Studio Debugger

Công cụ Android Studio Debugger cho phép ta theo dõi ứng dụng theo thời gian thực. Ngoài ra nó còn cung cấp thêm thông tin về thiết bị đã kết nối hoặc máy ảo mà bạn đang sử dụng.

Để minh họa quá  trình sử dụng công cụ này để debug chương trình. Mình sẽ minh họa bằng đoạn code sau:

public class RestaurantsActivity extends AppCompatActivity {
@Bind(R.id.locationTextView) TextView mLocationTextView;
@Bind(R.id.listView) ListView mListView;

private String[] restaurants = new String[] {"Sweet Hereafter", "Cricket", "Hawthorne Fish House", "Viking Soul Food",
"Red Square", "Horse Brass", "Dick's Kitchen", "Taco Bell", "Me Kha Noodle Bar",
"La Bonita Taqueria", "Smokehouse Tavern", "Pembiche", "Kay's Bar", "Gnarly Grey", "Slappy Cakes", "Mi Mero Mole" };

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_restaurants);
ButterKnife.bind(this);

ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, restaurants);
mListView.setAdapter(adapter);

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String restaurant = ((TextView)view).getText().toString();
Toast.makeText(RestaurantsActivity.this, restaurant, Toast.LENGTH_LONG).show();
}
});

Intent intent = getIntent();
String location = intent.getStringExtra("location");

mLocationTextView.setText("Here are all the restaurants near: " + location);
}
}

2. Breakpoint là gì? Cách đặt Breakpoint khi debug trong Android Studio

Khi ứng dụng chạy, với tốc độ của máy tính thì các dòng code sẽ được thực thi rất nhanh, cứ vèo vèo như gió vậy. Vậy làm sao để tạm dừng chương trình tại một dòng code nào đó để kiểm tra xem các tham số đầu vào đã chuẩn chưa? Kết quả trả về thế nào? Đó là lúc chúng ta cần đến Breakpoint. Breakpoint là một thuật ngữ lập trình có nghĩa là vị trí ở dòng code nào mà ta muốn chương trình khi sẽ dừng tại đó.

Chúng ta có thể chèn thêm một breakpoint (hoặc nhiều breakpoint tùy ý muốn) ở vị trí nào mà chúng ta muốn chương trình khi chạy đến đấy thì dừng lại. Có nhiều cách để thêm breakpoint.

Đây là một cách:

Click vào vị trí mà bạn muốn thêm breakpoint. Sau đó chọn Run > Toggle Line Breakpoint

Debug trong Android Studio

Một vòng tròn màu đỏ sẽ xuất hiện trực tiếp ngay bên trái của dòng code này. Vùng vòng tròn màu đỏ này nằm trong người ta gọi là gutter:

debug trong android studio

Để xóa điểm breakpoint, chúng ta có thể chọn dòng tương tự, sau đó chọn Run > Toggle Line Breakpoint một lần nữa để tắt nó đi. Hoặc đơn giản là click đúp vào vòng tròn đỏ.

Cách sử dụng Breakpoints

Sau đó, chúng ta có thể chạy debug bằng cách chọn icon “Debug” ở trên thanh công cụ. Việc này sẽ chạy ứng dụng ở chế độ debug lên thiết bị hay máy ảo

đặt breakpoint trong android studio

Một khi ứng dụng chạy, bạn mở đến màn hình ứng dụng mà dòng code được đặt breakpoint trước đó có thể được gọi. Nếu dòng code đó được thực hiện, ứng dụng sẽ dừng lại và màn hình console debuger sẽ xuất hiện.

Khi ứng dụng dừng lại tại breakpoint, để có thể kiểm tra giá trị của các biến thì chúng ta có một cách. Cách đơn giản là di chuột qua các biến để thấy các giá trị hiện tại của nó:

Debug ứng dụng trong Android Studio

Nếu chúng ta click vào biểu tượng “+” ở bên trái của cửa sổ màu vàng xuất hiện khi chúng ta di chuột qua một biến, chúng ta có thể xem thêm chi tiết hơn:

Debug ứng dụng trong Android Studio

Cách điều hướng các dòng code khi debug

Khi debug thì không chỉ đơn giản là kiểm tra giá trị tại dòng code mà bạn đặt breakpoint. Bạn còn phải kiểm tra xem luồng code có chạy đúng ý của mình không? Đây là lúc chúng ta cần đến kỹ năng sử dụng điều hướng.

Bạn nhìn thấy cửa sổ Debugger phía dưới chứ? Cửa sổ này sẽ hiện khi ứng dụng dừng tại breakpoint. Trình gỡ lỗi debugger chứa nhiều nút để tương tác với code. Dưới đây là 10 nút mà bạn sẽ thường sử dụng nhất:

Debug ứng dụng trong Android Studio

Chúng ta sẽ lần lượt tìm hiểu tác dụng của từng nút nhé

­­1. Nút hiển thị Breakpoint đang active
Bạn có thể đặt rất nhiều breakpoint trong ứng dụng. Và đôi lúc mải đọc code mà quên không biết mình đang debug dòng nào. Nút này có tác dụng đặt con trỏ trở lại vào vị trí mà bạn đang debug lỗi. (ví dụ: nếu bạn chèn một breakpoint vào một nơi nào đó, nhìn xung quanh một số file khác, bạn có thể nhấn vào nút này để trở lại breakpoint ban đầu của bạn).

2. Step Over
Nút này sẽ giúp debug nhảy xuống dòng code tiếp theo

3. Step Into
Nút này sẽ nhảy vào bên trong hàm

4. Force Step Into
Nút này sẽ cho phép nhảy thẳng đến dòng đầu tiên bên trong của hàm được gọi

5. Thoát ra ngoài
Cái này thì dễ hiểu rùi, đơn giản là nhảy ra khỏi hàm đang debug.

6. Tiếp tục chương trình(Resume Program)
Nút này sẽ tiếp tục chạy ứng dụng một cách bình thường. Tạm thời bỏ qua debug

7. Tạm dừng chương trình(Pause Program)
Nút này sẽ được greyed-out trước tiên bởi vì chương trình đã sẳn sàng tạm dừng. Nếu bạn chọn tiếp tục chương trình, bạn sẽ tạm dừng nó lại với tùy chọn này.

8. Dừng ứng dụng (Stop App)
Nút này sẽ làm ứng dụng đang chạy trên thiết bị hoặc máy ảo dừng lại hoàn toàn. Hiểu nôm na là tắt ứng dụng và không debug nữa.

9. Xem các Breakpoints
Nút này sẽ mở một cửa sổ hiển thị các tất cả breakpoint đã được chèn. Ngoài ra, nó cho phép bạn tinh chỉnh cài đặt cho từng breakpoint riêng biệt.

Ví dụ bạn chọn Remove once hit để tự động xóa breakpoint này đi khi bạn dừng chương trình.
Hay Log message to console tức là sẽ “bắn” một message trong logcat khi mà breakpoint này được active.

Nhiều lắm, các bạn tự khám phá các option khác nhé

Debug ứng dụng trong Android Studio

10. Mute Breakpoint
Tùy chọn này giúp bạn có thể bật – tắt tạm thời tất cả các breakpoint.

Tóm lại, Android Studio Debugger là một công cụ hết sức hữu hiệu. Bạn hãy thử trải nghiệm với việc sử dụng debugger trong các project mà bạn đang thực hành, debug ngay cả khi không gặp lỗi. Bằng cách này, bạn sẽ hiểu rất rõ về luồng code của dự án mà mình đang phát triển.

3. Một số thủ thuật Debug nâng cao

Attach Debugger  – Công dụng không ngờ

Có lẽ thời gian mình phải debug ứng dụng chắc có ngót nghét 5 năm. Thời gian đầu, mình cũng được các bạn trên mạng hướng dẫn debug là dùng nút hình con bọ xanh, và chỉ biết vậy thôi. Đến một ngày đẹp trời, mình quyết định thử click vào nút nhỏ trên thanh điều hướng, có tên là Attach Debugger.

Thật tuyệt vời! Công cụ này cho phép debug ứng dụng đang chạy hiện tại – mà không phải cài đặt lại. Điều này tiết kiệm được rất nhiều thời gian khi mà thời gian build gradle ngày càng chậm. Có thể nhiều bạn đã biết đến nút này, nhưng mình tin là ít người sử dụng.

Đặt Breakpoint có điều kiện

Khi bạn debug một vòng lặp và vì lý do nào đó bạn muốn kiểm tra vòng lặp thứ 6 chẳng hạn. Có lẽ phần lớn các bạn sẽ đặt một điểm breakpoint vào trong vòng lặp ấy và sau đó bạn tự nhấn phím F8 đúng 5 lần để đi đến nơi mà bạn muốn.

Với các breakpoint có điều kiện, bạn chỉ cần đưa điều kiện vào breakpoint và Android Studio chỉ dừng khi điều kiện là đúng. Để làm được như vậy, bạn làm như sau:

  1. Click chuột phải vào breakpoint và điền vào điều kiện.
  2. Tiến hành Debug lỗi như bạn thường làm và thật kinh ngạc. Android Studio chỉ dừng lại chỉ khi điều kiện được đáp ứng.

Exception Breakpoints – Tự động tìm dòng code bị exception

Chức năng này cực kì hữu ích khi bạn không biết ứng dụng đang bị lỗi ở đâu, và chưa có ý tưởng gì về việc phải đặt breakpoint chỗ nào. Thay vì thử đặt các breakpoint khắp nơi để dò xét. Bạn có thể yêu cầu IDE tạm dừng bất kể khi nào mà một exception có thể hiện  ra.

Đây là cách thực hiện: Run > View Breakpoints hoặc cmd + shift + F8 để hiển thị cửa sổ Breakpoint

  1. Nhấn + sau đó chọn Java Exception Breakpoint.
  2. Chọn/tìm kiếm một exception mà bạn nghi ngờ.
  3. Chỉ định bất kì tùy chọn nào nếu bạn muốn và đảm bảo rằng các điểm breakpoint này trong trang thái được cho phép.

Như vậy là mình đã chia sẻ toàn bộ những kiến thức cơ bản và có đôi chút nâng cao để hướng dẫn debug trong Android Studio cho bạn. Các bạn đón đọc.

Tài liệu tham khảo:

vncoder logo

Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!



Khóa học liên quan

Khóa học: Android

Học Kotlin cơ bản
Số bài học:
Lượt xem: 17611
Đăng bởi: Admin
Chuyên mục: Android

Học lập trình Flutter cơ bản
Số bài học:
Lượt xem: 58511
Đăng bởi: Admin
Chuyên mục: Android

Lập trình Android cơ bản
Số bài học:
Lượt xem: 22990
Đăng bởi: Admin
Chuyên mục: Android