Sau khi bạn đã hoàn thành việc cài đặt máy ảo Android và biết cách kết nối điện thoại tới PC. Hãy khoan nghĩ tới việc bắt tay vào lập trình luôn. 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.
Nội dung bài viết gồm có:
- Hướng dẫn sử dụng Android Studio Debugger
- Tìm hiểu Breakpoit là gì và cách sử dụng nó để debug trong Android Studio
- Và một số thủ thuật “đắt giá” khi debug trong Android Studio
Chúng ta bắt đầu nhé
Nội dung chính của bài viết
#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
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:
Để 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 đỏ.
>>> Chi tiết về cách sử dụng Android Studio
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
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ó:
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:
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:
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é
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.
- Dành cho bạn: Cách cấu hình và cài đặt Android Studio mới nhất
#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:
- Click chuột phải vào breakpoint và điền vào điều kiện.
- 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.
Ví dụ như hình vẽ
Click chuột phải vào breakpoint và đặt điều kiện cho breakpoint
và đây là kết quả
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
- Nhấn + sau đó chọn Java Exception Breakpoint.
Chọn/tìm kiếm một exception mà bạn nghi ngờ.
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. Về cơ bản là chúng ta đã được trang bị đầy đủ công cụ để có thể chiến được Android rồi. Tiếp tục trong khoá học tự học lập trình Android, bài viết sau chúng ta sẽ tìm hiểu về Activity, thành phần quan trọng nhất của ứng dụng android. Các bạn đón đọc nhé
Hay lắm anh ơi
Cám ơn bạn đã ủng hộ ạ