Bug là gì? Những tiện ích đến từ các việc “chiến đấu” cùng với bug là gì? Đó là 1 trong câu hỏi không mấy niềm vui, vày chắc rằng phần đông lập trình sẵn viên hầu như mong muốn làm cho tính năng vượt trội, chứ đọng chả mấy ai phù hợp cần duy trì thành phầm có sẵn giỏi là fix bug. Bạn đang xem: Fix bug là gì
Song, cùng với cá nhân tôi, việc đào bới tìm kiếm với fix bug mang về tương đối nhiều niềm vui cũng như thời cơ học hỏi và chia sẻ, phát triển công việc và nghề nghiệp. Sau đây là một số tổng kết của tớ về:
Bug là gì? 4 công dụng của Việc fix bugCách khắc ghi bug hiệu quả3 bài học kinh nghiệm Khủng cùng 18 kinh nghiệm tay nghề xương ngày tiết về fix bugXem việc có tác dụng Developer chất tại aviarus-21.com
Bug là gì? Debug là gì? Fixbug là gì?
Bug là gì? Bug là những lỗi ứng dụng vào chương trình hoặc khối hệ thống máy tính xách tay khiến cho kết quả không chính xác hoặc ko chuyển động như mong muốn. – Theo Wikipedia
Debug là quy trình tra cứu kiếm cùng phát hiện tại lỗi vào ứng dụng trước lúc launching, đưa thành phầm mang đến tay người tiêu dùng. Debug diễn ra tức thì sau khi những chiếc code trước tiên được viết và thường xuyên được thực hiện cho đến khi kết phù hợp với đa số unit khác của thiết kế tạo ra thành một sản phầm phần mềm hoàn hảo.
Fixbug (sửa lỗi) là quá trình xúc tiến ngay lập tức sau debug, nhằm bảo trì hoặc nâng cao unique sản phẩm.
Lợi ích của vấn đề gặp bug là gì?
Trong từng ngôi trường hợp, bạn đa số rất có thể học tập vài điều về phong thái xây dựng, sản phẩm hoặc về lĩnh vực mà lại ứng dụng đã chuyển động.
Trên không còn, tất cả 4 lí bởi bao gồm, cũng là 4 thú vui quan trọng độc nhất nhưng mà vấn đề fix bug rất có thể đem đến mang lại thiết kế viên như sau:
Mỗi bug luôn dạy dỗ bạn điều gì đó
Feedback luôn là chìa khóa của phát triển thành phầm với đôi khi cũng chính là triết lý cốt yếu của quy mô agile.
Cả unit testing với iterative development số đông nhằm mục đích chỉ dẫn feedbachồng nkhô nóng rộng. Với unit testing, chúng ta cảm nhận feedbaông chồng về việc code tất cả chạy hay không. Với từng release, chúng ta cũng có thể lắng nghe feedbaông xã của công ty về các tính năng được cải thiện.
Báo cáo bug cũng chính là vẻ ngoài feedbaông xã khác về code của người tiêu dùng.
cũng có thể có khá nhiều nguim nhân gây nên một bug. Ví dụ:
Bạn có những câu lệnh if lồng nhau với vô tình lại đặt lệnh else ngơi nghỉ không nên nhánh.Giả định không đúng đắn. Chẳng hạn: tầm nã xuất một trực thuộc tính ko mãi sau, gắng là dính NullPointerExceptionKhông bao gồm hết các trường hòa hợp. Chẳng hạn, bạn đề nghị trả về một quý giá không giống đi trường hợp hàm được hotline với tđắm đuối số XHoặc, quý khách áp dụng phần mềm theo cách nhưng bạn không ngờ cho tới (mà lại vẫn thích hợp lệ), với cố là bùm! Dính bug!Đào sâu mày mò ngulặng nhân gây ra bug, các bạn sẽ đúc rút được nhiều bài học kinh nghiệm quý hiếm.
Code của các bạn sẽ dễ dàng debug hơn
Một khi vẫn phải bỏ công sức của con người, thời hạn ra nhằm tra cứu cùng fix bug, từ bỏ khắc các bạn sẽ mong mỏi viết code càng dễ dàng debug càng xuất sắc. Bởi vì chưng sẽ rất khốn khổ nếu như không tồn tại phần đông tài liệu quan trọng.
Một sự việc rất là dễ dàng gặp gỡ là các Exceptions (biệt lệ) không cất dữ liệu hữu ích.
lấy một ví dụ nhỏng, bao gồm một đoạn code thử dùng quý giá trường đoản cú 0 – đôi mươi. Bao nhiêu lần bạn dính exception chỉ vỏn vẹn “Illegal value”? Nó trọn vẹn không hỗ trợ gì nếu như bạn cần sửa lỗi. Chẳng hạn, giả dụ như giá trị 21 được nhập vào, exception bắt buộc nói là “Illegal value: 21, not in range 0 – 20”.
Việc hiển thị cực hiếm được nhập vào cùng với tầm giá trị mong muốn, rõ ràng khôn xiết bổ ích. Giá trị hiện giờ rất có thể là 21, -128 tuyệt 65535. Chúng phần lớn giúp cho bạn có đầu mối nhằm đưa ra lỗi, rộng được coi là dòng “Illegal value” nthêm gọn.
ngay khi Steve sầu McConnell thi thoảng cũng phá vẻ ngoài này vào cuốn nắn sách hoàn hảo Code Complete. Chẳng hạn, vào chương 15, McConnell nêu ra tình huống phân phát hiện tại một thứ hạng cam kết từ không hề mong muốn, tuy thế thông tin lỗi lại không hiển thị cam kết từ đó.
do đó, mọi khi kiếm tìm với fix bug, bạn phải từ hỏi: liệu rất có thể đổi khác điều gì trong code nhằm sau đây không chạm chán đề xuất hầu như bug dạng này không? Liệu có bí quyết nào hoặc điều gì bản thân nên có tác dụng, để sau đây tìm ra rất nhiều bug dạng này thuận tiện hơn không?
Việc làm cho Developer TP.. HCM
Việc làm Developer Hà Nội
Fix bug mang lại thú vui cho cả bạn và khách hàng
trong những nụ cười mà lại các bước xây dựng mang về, theo tôi, sẽ là làm cho điều hữu ích cho người không giống. Fix bug cũng đem đến nụ cười tương tự, với thậm chí còn còn hối hả rộng.
Bởi lẽ, để tạo thành một tính năng vượt trội đề nghị tốn tương đối nhiều thời hạn, trong những khi vấn đề fix một bug hoàn toàn có thể chỉ việc một giờ đồng hồ thời trang. Mỗi bug được fix dứt đang đem lại khoái cảm đang trả thành/có được điều gì. Và kia là 1 cảm giác tuyệt vời!
Fix bug cũng đưa về thú vui cho quý khách hàng (mặc dù nghe có vẻ oái oăm). Nếu ngay từ đầu không tồn tại bug, chưa hẳn fix bug, thì chẳng bắt buộc người tiêu dùng đang vui rộng sao?. Nhưng, từ tay nghề hơn 20 năm lập trình sẵn cùng “chiến đấu” cùng với bug, tôi dám khẳng định: quý khách hàng đích thực ưng ý mỗi một khi nhận về bug đã làm được fix xong lập cập.
Vấn đề là vậy: Tất cả đầy đủ tín đồ gần như biết SẼ LUÔN CÓ BUG! Cho buộc phải, miễn sao có fan chuẩn bị fix thật nkhô nóng ngay trong lúc bug được khui ra.
Tlỗi giãn cùng với video: Fix bug “chất” nlỗi Vinh Râu
Niềm vui của câu hỏi giải câu đố

Rất các lập trình viên ham mê giải câu đố, như chơi trò Sudoku, giải ô chữ, giải IQ toán học, xuất xắc tsay mê gia các thách thức lập trình.
Thậm chí, đọc truyện trinc thám giết mổ bạn cũng đưa về tương đối nhiều hứng khởi: bạn lần theo các manh mối nhằm tò mò hồ hết cthị xã vẫn diễn ra như thế nào.
Debug và fix bug cũng vậy. Mỗi bug là 1 trong những bí ẩn nên mày mò.
Thông thường, bội phản ứng thứ nhất của doanh nghiệp Khi phát hiện ra một báo cáo bug đang là: Không thể nào! Tại sao rất có thể xẩy ra bug này được?!?
Và cũng trường đoản cú đó, bạn bắt đầu hành trình khám phá bí ẩn. quý khách lần theo các làm mai. Logs nói gì? Có báo cáo lỗi làm sao từ bỏ khối hệ thống không? Tại thời điểm này, hệ thống tất cả xẩy ra vụ việc gì khác xuất xắc không? Gần đây có vật gì bị biến đổi ko – ứng dụng mới, biến hóa thông số kỹ thuật, lưu giữ lượng truy cập hình họa hưởng?
Cách hiệu quả tuyệt nhất để ghi lại bug là gì?
Lý vì chưng của câu hỏi rất cần phải lưu lại bug là gì? Để chúng ta cũng có thể giao lưu và học hỏi tác dụng duy nhất trường đoản cú phần lớn bug chúng ta đã fix. Phương thơm pháp cơ mà tôi dùng là luôn dành ra vài ba phút để ghi crúc lại những thông tin: thể hiện bug, giải pháp fix, bài học kinh nghiệm kinh nghiệm.
Nguyên ổn tắc
Chỉ ghi chú số đông bug nặng nề nhằn hoặc đích thực độc đáo. Đây chưa hẳn là bug tracker.Ghi chụ phần lớn bug vì chủ yếu bản thân gây ra. (Trừ trường đúng theo bug của người không giống dẫu vậy đủ trúc vị).Ghi lại bug ngay lập tức sau khoản thời gian fix kết thúc. Tránh ghi nhớ nhầm, nhớ ko chi tiết.Cách lưu lại bug
Tôi thường dùng form dưới đây để đánh dấu bug bên dưới dạng tệp tin text (bugs.txt). quý khách hoàn toàn có thể tham khảo trải qua ví dụ sau:
tin tức nền:
Cách sửa – Quá trình sửa:
Sửa: Nếu chiều nhiều năm tìm thấy bởi 0, đặt nó lại bởi 1. do đó chúng ta sẽ luôn đi tiếp được.Sửa vào file(s): callh/q931_msg.cxxThủ phạm là tôi: Đúng vậy.Thời gian sửa bug: 1 tiếng.Bài học tập rút ra được:
Bài học: Đặt “tinh thần lầm chỗ” vào tài liệu của tín hiệu gửi đến. Giá trị dữ liệu có thể quá rộng làm lịch trình chạy sai. Bên cạnh đó Lúc chiều lâu năm bởi 0 cũng có thể là 1 trong tín hiệu xấu.Ba bài học bự giành cho thiết kế viên
Về coding

Những lỗi phạm yêu cầu trong code? Có đề xuất sẽ quên một else-part? Có nên một lệnh Điện thoại tư vấn hệ thống bị thất bại, nhưng trả lời chưa được check? Làm sao sửa đổi code nhằm rời gần như sự việc này trong tương lai?
Trình từ bỏ sự kiệnKhi xử lý sự khiếu nại, hầu như thắc mắc sau sẽ khá tất cả ích:
Liệu sự kiện rất có thể đến theo hiếm hoi trường đoản cú không giống được không?Sẽ cầm như thế nào còn nếu không nhận ra sự kiện này? Sẽ nỗ lực nào nếu sự kiện này diễn ra nhị lần liên tiếp?Thậm chí, nếu như nó không lúc nào xảy ra, bugs sống phần nhiều phần khác của hệ thống (hoặc của các khối hệ thống không giống có tương tác) vẫn hoàn toàn có thể khiến nó xẩy ra.Quá sớmCái này là một trong trường hợp đặc biệt của phần “Trình tự sự kiện” sinh sống trên. Nhưng bởi vì nó gây nên một trong những lỗi cực kỳ khó tìm vì thế nó được đưa ra riêng.
Chẳng hạn, trường hợp dấu hiệu nhận ra vượt mau chóng, trước khi các quy trình thiết lập và khởi đụng hoàn toàn, khả năng công tác sẽ có được phần lớn biểu thị kỳ quái.
Một ví dụ khác: khi một kết nối được đánh dấu là down ngay cả trước lúc nó được đưa vào danh sách idle. khi đề xuất tìm lỗi này, chúng ta luôn mang định rằng nó bị khắc ghi down trong khi sẽ ở vào list idle (tuy vậy dịp đó tại sao nó ko được lấy ra khỏi danh sách?).
Đó là một trong những sai trái vào nhấn thức của bọn họ lúc không xét mang đến trường thích hợp có những sản phẩm công nghệ xẩy ra quá nhanh chóng.
“Cái chết êm đềm”Một trong các những lỗi nặng nề vạc hiện nhất là khi chúng lặng lẽ ra đi và lịch trình tiếp tục được thực hiện cơ mà ko quăng ra exception làm sao.
Chẳng hạn nhỏng những lệnh Call hệ thống (bind chẳng hạn) trả về mã lỗi nhưng lại ko được kiểm tra.
Hoặc như, phần code nhằm so sánh biểu đạt chỉ dễ dàng return Lúc phát hiện một nhân tố không phù hợp lệ, trong những lúc đáng lẽ nên quăng lỗi.
Chương trình tiếp tục chạy trong trạng thái không đúng, khiến cho debug càng khó khăn hơn. Nói thông thường tốt nhất có thể là một trong những lỗi đề nghị được quăng ra càng sớm càng giỏi.
IfLệnh if với khá nhiều ĐK, if (a or b), nhất là Lúc được nối lại với nhau, if (x) else if (y), gây ra quá trời lỗi cho tôi.
Dù đến câu lệnh if về khía cạnh định nghĩa quá đơn giản và dễ dàng đi, chúng vẫn dễ bị không đúng khi có rất nhiều điều kiện kèm theo.
Bây giờ tôi nỗ lực viết code đơn giản dễ dàng hơn để tránh đề nghị giải pháp xử lý đầy đủ câu if tinh vi.
ElseCũng gồm thừa ttách lỗi là do ko xét đến ngôi trường đúng theo bỏ qua lệnh else. Gần như tất cả trường phù hợp, luôn buộc phải gồm một lệnh else cho mỗi câu if. Ngoài ra, nếu như bạn đặt một biến bên trong lệnh if, tài năng cao là chúng ta phải kê nó nghỉ ngơi gần như nơi khác nữa.
Xem thêm: Tên Thật Ưng Hoàng Phúc
Txuất xắc đổi các trả địnhNhững lỗi cạnh tranh chống rời duy nhất vào tiến độ đầu hay là vì biến hóa mang định.
Chẳng hạn, thuở đầu có thể chỉ bao gồm một sự kiện customer hằng ngày. Thế là không ít code được viết với trả định này. Một ít ngày sau, xây đắp thay đổi chất nhận được các sự kiện customer ra mắt trong ngày. Khi chuyện này xẩy ra, hoàn toàn có thể hết sức nặng nề để biến hóa hết toàn bộ ngôi trường hòa hợp bị tác động vì chưng kiến thiết new.
Nói bình thường ko cực nhọc để tra cứu tất cả những phần nhờ vào hiển nhiên. Cái cực nhọc là tìm thấy đầy đủ phần nhờ vào tàng ẩn phía bên trong thi công cũ.
Chẳng hạn rất có thể bao gồm phần code tích lũy toàn bộ sự khiếu nại của customers trong một ngày nhất mực. Một mang định phân minh rất có thể là tác dụng trả về không lúc nào lớn hơn con số customers.
Tôi không biết cách làm sao giỏi nhằm ngừa đa số trường hòa hợp này, nếu khách hàng nào biết thì lưu ý góp tôi với nhé.
LoggingĐiều tối đặc biệt quan trọng là tất cả nhấn thức về phần nhiều gì chương trình hoạt động, đặc trưng giữa những lịch trình có ngắn gọn xúc tích tinh vi.
Cần chắc hẳn rằng logging được đặt trọn vẹn và đúng nơi, để bạn cũng có thể trình bày tại sao công tác lại chạy điều đó.
Lúc đều máy hoạt động suôn sẻ tru thì chẳng sao, nhưng mà ngay lúc công tác xảy ra lỗi (cthị trấn bắt buộc tách khỏi), không nhiều ra bạn sẽ thấy hạnh phúc vì đang logging đúng vị trí.
Về Testing

Có đầy đủ bug ví dụ buộc phải được “khui” ra ngay vào quá trình demo. Nếu vậy, phần demo như thế nào đã thiếu hụt sót – unit, functional, giỏi system? Test case nào đã biết thành thiếu?
0 và nullLuôn chắc chắn là bình chọn với cái giá trị 0 và null (nếu có thể). Đối cùng với chuỗi, đề nghị lưu ý chuỗi rỗng, với chuỗi là null.
Một ví dụ khác: khám nghiệm trường vừa lòng đứt liên kết TCP. trước khi bất cứ tài liệu (zero bytes) nào được gửi.
Bỏ qua Việc chất vấn các ngôi trường hợp trên là nguyên nhân số một khiến cho bug lọt khỏi phần thử nghiệm của tớ.
Thêm vào với xóa điThường những tính năng mới đang dính cho tới cthị xã thêm những thiết lập cấu hình bắt đầu vào hệ thống, chẳng hạn như một hình trạng format mới số điện thoại cảm ứng thông minh.
Thông thường bạn sẽ khám nghiệm xem có thể thêm định dạng new hay không, nhưng mà tôi thấy là rất dễ dàng quên chất vấn trường hợp xóa định hình cũ.
Xử lý lỗiPhần code dùng để cách xử lý lỗi thường cực kỳ cạnh tranh chất vấn. Tốt nhất là cần bao gồm những chạy thử tự động nhằm bình chọn phần này, cơ mà nhiều lúc việc này trngơi nghỉ đề xuất bất khả.
Một mẹo tôi xuất xắc dùng là sửa code tạm thời nhằm kích hoạt phần xử trí lỗi. Dễ độc nhất vô nhị là lật ngược ĐK if lại, ví dụ như chuyển if error_count > 0 thành if error_count == 0.
Một ví dụ không giống là vờ vịt viết không nên tên một column trong database nhằm kích hoạt lỗi.
Sử dụng tài liệu đầu vào ngẫu nhiênMột biện pháp kiểm tra không giống rất có thể dùng làm phạt hiện tại bug là áp dụng dữ liệu nguồn vào hốt nhiên.
Chẳng hạn như, phần giải thuật ASN.1 của giao thức H.323 vận động trên tài liệu nhị phân. Bằng giải pháp gửi những bytes đột nhiên nhằm lời giải, Shop chúng tôi vẫn đưa ra tương đối nhiều lỗi trong phần này.
Một ví dụ khác là tạo thành phần đông cuộc gọi thí nghiệm, với thời hạn Call, độ trễ lúc vấn đáp, bên nào ngắt trang bị trước, v.v.. được tạo thành bỗng nhiên. Những cuộc gọi này làm cho lộ ra một gò bug, đặt biệt là khi chúng xen vào rất nhiều sự kiện xẩy ra gần như là cùng lúc.
Kiểm tra hành vi không muốn bao gồm thật sự KHÔNG diễn raThường testing liên quan đến xem thử hành vi mong muốn bao gồm xẩy ra ko. Nhưng lại rất đơn giản làm lơ ngôi trường vừa lòng trở lại – soát sổ hành vi không muốn thiệt sự ko ra mắt.
Tự làm toolTôi hay tự làm các tool nhỏ tuổi nhằm kiểm tra dễ dàng rộng.
lấy một ví dụ, Khi Khi tôi thao tác với giao thức SIPhường cho VoIPhường, tôi viết một quãng mã nhỏ dại hoàn toàn có thể vấn đáp với headers cùng cực hiếm tôi ước muốn. Đoạn mã này giúp tôi bình chọn phần lớn trường hợp quan trọng thuận tiện hơn.
Một ví dụ không giống là một trong công tác cái lệnh chuyên dùng để làm Gọi API.
Bằng phương pháp bắt đầu nhỏ, cùng từ từ trở nên tân tiến thêm nhân tài cho nó, cuối cùng tôi bao gồm trong ni gần như pháp luật khôn xiết bổ ích. Lợi ích của câu hỏi này là tôi bao gồm nguyên lý quả như tôi ước muốn.
Về Debugging

Cách nhanh hơn nhằm “khui” bug là gì? Tôi đã sử dụng đúng tool chưa? Có nên tôi đã rộp đoán thù vượt nhiều? Tôi gồm bắt buộc logging xuất sắc hơn không?
Thảo luậnNếu bạn hỏi tôi giải pháp công dụng duy nhất để xử lý bug là gì? Tôi sẽ trả lời là bàn luận với người cùng cơ quan. Trong lúc kiếm tìm biện pháp phân tích và lý giải mang lại bọn họ phát âm vấn đề gặp mặt buộc phải là gì, tôi cũng đôi khi hiểu sâu với rõ hơn về nó.
Thêm nữa, cho dù không quen thuộc cùng với code vào thắc mắc, hay họ sẽ sở hữu được cái nhìn một cách khách quan để chỉ ra rằng vấn đề hoàn toàn có thể phát sinh từ bỏ đâu.
Đây là biện pháp rất là tác dụng góp tôi giải quyết và xử lý các bug cạnh tranh nhằn độc nhất vô nhị.
Cẩn thận đến từng tiểu tiếtkhi Việc debug ngốn vô số thời gian, thì thường là vì tôi đang suy đân oán không nên.
Ví dụ, tôi suy nghĩ vụ việc xảy ra ở một method nào kia, trong những khi thực tiễn không đời nào chuyện kia xảy ra.
Hoặc, một nước ngoài lệ xẩy ra trái với ngoại lệ tôi suy đoán. Hoặc, tôi suy nghĩ phần mềm chạy version mới nhất, trong những lúc thực ra này lại chạy một version cũ rộng.
Cho buộc phải, hãy chắc chắn là bạn đang kiểm tra lại toàn bộ cụ thể nắm bởi mang định hầu như trang bị. Thật dễ giúp thấy rất nhiều gì bạn mong muốn thấy, rộng là tất cả những gì thật sự sống kia.
Txuất xắc đổi mới nhấtLúc đều lắp thêm từng chuyển động bỗng dưng trục trẹo, thường là do hầu như chuyển đổi mới nhất gây ra.
Có trường hòa hợp, bạn chỉ biến đổi logging, tuy nhiên một lỗi trong logging đang tạo ra sự nắm to hơn những.
Để dễ dàng truy vấn search đều sự thế đẳng cấp này, chúng ta nên commit hầu như vậy biến đổi nhau trong những commit không giống nhau, với ghi chú cụ thể về câu hỏi chuyển đổi.
Tin trên bạn dùngĐôi khi người tiêu dùng report một vụ việc làm sao đó, ý suy nghĩ thứ nhất của mình là: Không thể nào! Chắc bọn họ lầm lẫn chứ cthị trấn kia sao xẩy ra được! Nhưng rồi, hóa ra chúng ta sẽ report đúng.
Những tay nghề tmùi hương đau sẽ dạy tôi rằng: Hãy tin ở người tiêu dùng.
Dĩ nhiên tôi vẫn bắt buộc bình chọn lại giúp thấy phần đa thiết bị đã có được cấu hình thiết lập đúng không. Nhưng tôi vẫn chạm chán rất nhiều trường hợp kì quặc xẩy ra chính vì một thiết lập cấu hình ko thường xuyên gặp mặt, một bí quyết sử dụng không được dự đân oán trước, giỏi đưa định ban sơ của mình rằng chúng đề xuất điều đó. Và cố gắng là công tác chạy không nên.
Test phần đang sửaTuân theo số đông bước bên trên sẽ giúp bạn chắc chắn là bug đó đích thực là bug, với phần đang sửa thực thụ hiệu quả. Đơn giản nhưng mà cần thiết.

Nếu chúng ta nghĩ số đông share này hoàn toàn có thể giúp ích cho bạn bè hoặc đồng nghiệp thì chớ hổ hang dấn nút ít Share dưới nhé!