Hướng dẫn cach dat debug trong dev c++ năm 2024

Bug là gì?

  • Bugs là ám chỉ các lỗi xảy ra trong logic, hay bất kỳ vấn đề gì gây ra việc làm cho ứng dụng không thực thi được hoặc thực thi sai.
  • Bugs luôn tiềm ẩn ở mọi nơi, và ta không thể lường trước được mọi tình huống có thể xảy ra mà chỉ có thể cố gắng làm giảm nó đến mức thấp nhất có thể tùy vào khả năng của ta tại thời điểm phát triển và bảo trì ứng dụng.
  • 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.
  • Chuyện xảy ra lỗi trong hàng nghìn dòng lệnh đó là chuyện bình thường đối với bất cứ 1 người làm lập trình nào. Chương trình có thể chạy không đúng ý người lập trình, hoặc chạy sai chức năng nó được quy định, gây cho chương trình bị đánh giá kém chất lượng. Vậy khi bị lỗi thì các lập trình viên phải debug để fix lỗi giúp cho chương trình (program) chạy tốt.

Mục đích của việc debug

  • Mục đích của Debug không chỉ là để loại bỏ lỗi (error) khỏi chương trình mà quan trọng hơn còn để giúp lập trình viên hiểu rõ hơn sự thực thi của chương trình. Một lập trình viên không có khả năng Debug hiệu quả thì cũng giống như bị mù vậy.

Các phương pháp debug

  • Debugging Tool – dùng công cụ để Debug – là phương pháp Debug đi sâu vào source code nhất. Thường thì chúng ta gọi những Debugging Tool này là Debugger. Những Debugger phần mềm thông dụng là Microsoft Visual Studio Debugger , GNU Debugger . Ngoài ra còn có những Debugger phần cứng được thiết kế kèm cho các hệ thống nhúng (Embedded System) bởi các thiết kế nhúng không phải là những thiết kế mang tính mục đích chung (General-purpose) mà thường được thiết kế trên các platform riêng biệt phục vụ các ứng ứng dụng riêng biệt nên cũng cần những Debugger đặc thù đi kèm.
  • Printlining: đơn giản là bạn thêm vào source code của bạn những dòng lệnh để in ra những thông tin mà bạn cần theo dõi trong quá trình thực thi. Chẳng hạn nếu bạn dùng Arduino IDE thì bạn sẽ không có Debugger và cách Debug phù hợp nhất là bạn dùng Serial.print().
  • Logging: tạo ra một biểu mẫu để ghi (log) lại những thông tin sau khi chương trình thực thi. Phân tích nguyên nhân lỗi dựa trên những thông tin này.
  • Ngoài ra thì còn một phương pháp mà cá nhân mình cho là rất hiệu quả đó là phương pháp – Nhờ người khác debug – là việc bạn vác đoạn code ra nhờ người có kinh nghiệm hơn debug dùm.

Mẹo viết code giúp chúng ta soát lỗi nhanh

  • Dùng comment (chú thích) sau khi viết xong 1 đoạn code về 1 phần nào đó để sau này dễ tìm và sửa.
  • Đặt tên các hàm các biến có ý nghĩa để dễ kiểm soát và tìm lỗi.
  • Hoặc có thể sử dụng Breakpoints để rà soát xem phần mềm của bạn chạy đến vị trí nào của code và đến đó có đúng không.
  • Đừng bỏ qua các Error Message nó sẽ giúp chúng ta có thể tìm ra số dòng code và sửa rất nhanh.

Hướng dẫn cach dat debug trong dev c++ năm 2024

  • Software engineer phát triển bản thân như thế nào?
  • Hướng dẫn cách viết clean code cho lập trình viên (P1)
  • Những sự thật ít người biết tới về nghề lập trình

Để trở thành lập trình viên thì chúng ta phải học code và những môn bổ trợ. Để trở thành lập trình viên giỏi thì ta cần phải biết nhiều thứ khác nhau, debug cũng là một thứ mà một lập trình viên giỏi nhất định phải thành thạo.

Trước khi khi học ở trường đại học thì tôi không biết về nó nên khi đi làm thì tôi gặp rất nhiều khó khăn, vì vậy tôi viết bài này chia sẻ về debug, hy vọng sẽ giúp các bạn nhiều hơn về con đường lập trình.

Hướng dẫn cach dat debug trong dev c++ năm 2024

1. Debug là gì?

Debug là một công cụ gỡ lỗi mà một ngôn ngữ lập trình nào cũng phải có, nói đến debug thì mọi người sẽ nghĩ đến chương trình bị lỗi thì sẽ sử dụng công cụ này để tìm lỗi, tuy nhiên đó chỉ là một phần đúng mà thôi. Ngoài chức năng gỡ lỗi của nó thì nó còn cho chúng ta biết những thứ khác, những thứ đó là gì thì chúng ta cùng tìm hiểu các ví dụ thực tế nhé.

2. Debug trong ngôn ngữ javascript

Để hiểu về debug thì bạn cần biết được bốn thứ quan trọng đó là: breakpoint, step over, step into, watch.

2.1 Breakpoint là gì?

Breakpoints đó là điểm dừng, bất kể bạn làm việc trên javascript hay bất kỳ một ngôn ngữ nào khác cũng đều có breakpoints, khi bạn debug thì cần đặt một điểm dừng ở trong source code, nơi mà bạn đang nghi ngờ chỗ đó phát sinh bug.

Hướng dẫn cach dat debug trong dev c++ năm 2024

Quan sát hình bên trên, vùng khoanh màu đỏ (dòng 8) thì tôi có đặt một breakpoints, khi chương trình của tôi chạy tới dòng 8 thì tự động chương trình sẽ dừng lại và không chạy tiếp cho đến khi tôi tác động.

2.2 Step over là gì?

Step over là di chuyển xuống một dòng, sau vị trí đặt breakpoints

Hướng dẫn cach dat debug trong dev c++ năm 2024

Quan sát hình bên trên thì ta thấy vị trí ban đầu đã di chuyển xuống dòng 9, còn breakpoints của dòng 8 đã đặt trước đó thì vẫn sẽ giữ nguyên như cũ để cho lần chạy tiếp theo.

2.3 Step into là gì?

Step into là di chuyển vị trí debug vào trong function con, bạn hãy nhìn hình bên trên sẽ thấy function getLocalStorage(). Step into sẽ di chuyển debug vào hàm này.

Hướng dẫn cach dat debug trong dev c++ năm 2024

2.4 Watch là gì?

Watch là nơi mà hiển thị các thông tin của biến, giá trị trả về của function, để chúng ta xem và phán đoán bug, đồng thời có thể đưa ra được cách giải quyết cái bug của mình.

Hướng dẫn cach dat debug trong dev c++ năm 2024

Quan sát hình bên trên thì tôi có thể xem được các dữ liệu của biến key truyền vào function getLocalStorage(key) là gì. Và kết quả trả về của getLocalStorage là gì.

2.5 Cách debug trong javascript

Để debug javascript thì tôi sẽ dùng công cụ developer tool của google chrome. Để mở công cụ này lên thì nhấn F12 thôi, khá là đơn giản, khi đó giao diện của bạn sẽ như thế này.

Hướng dẫn cach dat debug trong dev c++ năm 2024

Khi mở lên thì chọn tab Source, nơi đây sẽ chứa những file html, js, css, image dự án của bạn.

2.5.1 Đặt một breakpoints

Hướng dẫn cach dat debug trong dev c++ năm 2024

Để đặt một điểm dừng cho debug thì tôi sẽ nhấn chuột trái vào vùng khoanh màu đỏ.

2.5.2 Step over

Để di chuyển sang dòng tiếp theo thì nhấn F10, hoặc nút được khoanh màu đỏ hình ở bên dưới.

Hướng dẫn cach dat debug trong dev c++ năm 2024

2.5.3 Step into

Để di chuyển vào trong hàm con của getLocalStorage thì nhấn F11, hoặc phấn vào nút được khoanh màu đỏ ở hình bên dưới.

Hướng dẫn cach dat debug trong dev c++ năm 2024

2.5.4 Watch

Để xem dữ liệu của các kiến hay giá trị trả về thì bôi đen giá trị muốn xem và nhấn chuột phải tại giá trị đó và chọn “Add selected text to watches”.

Hướng dẫn cach dat debug trong dev c++ năm 2024

Hướng dẫn cach dat debug trong dev c++ năm 2024

Nhấn F8 để nhảy đến vị trí đặt breakpoints kế tiếp, nếu không có vị trí đặt breakpoints kế tiếp thì chương trình sẽ tiếp tục chạy.

Trên đây là những cái cơ bản nhất của debug, có thể các bạn xem xong phần này nhưng vẫn sẽ thắc mắc vì chưa hình dung được khi vào dự án thực tế thì bug sẽ như thế nào, cách giải quyết ra sao. Nếu bạn thắc mắc như vậy thì đó là điều hiển nhiên, vì bài này tôi viết chỉ ở mức cơ bản, tiếp cận về debug mà thôi, ở bài viết sau tôi sẽ viết những bài nâng cao hơn, tôi sẽ tự đặt ra những ví dụ thực tế về những cái mà tôi đã gặp phải và cách giải quyết chúng. Lúc đó bạn sẽ hiểu rõ thêm về sức mạnh của debug là gì.