Lỗi runtime trong Windows đã tồn tại lâu như chính hệ điều hành. Đây là thông báo lỗi thường thấy khi một ứng dụng bị sập, nhưng lỗi runtime chính xác là gì, và bạn có thể làm gì về nó?
Phát triển phần mềm phức tạp, và các ứng dụng hiện đại dựa vào các thư viện tinh vi và dữ liệu hỗ trợ để hoạt động như mong đợi. Hướng dẫn này sẽ giúp bạn hiểu tại sao lỗi runtime xảy ra và cách giảm thiểu chúng.
Lỗi Runtime Là Gì?
Thuật ngữ "lỗi runtime" (runtime error) đề cập đến bất kỳ lỗi ứng dụng nào khi một chương trình đang được thực thi. Nói cách khác, nó xảy ra với một chương trình đang chạy. Điều này trái ngược với các lỗi xảy ra khi chương trình đang biên dịch (compiling). Biên dịch là quá trình lấy mã lập trình (mã "nguồn") và chuyển đổi nó thành mã nhị phân có thể được thực thi bởi hệ điều hành. Nếu bất kỳ phần nào của mã nguồn không hợp lệ, trình biên dịch sẽ dừng lại và đưa ra thông báo lỗi.
Lỗi runtime xảy ra khi tệp thực thi đã biên dịch gặp phải tình huống mà nó không biết phải làm gì tiếp theo hoặc có điều gì đó can thiệp vào hoạt động bình thường của nó. Lúc này, nó sẽ ném ra lỗi runtime.
Các Loại Lỗi Runtime Khác Nhau
Vì lỗi runtime được định nghĩa rộng rãi, khắc phục sự cố chúng có thể khó khăn. Việc hiểu các loại lỗi phổ biến bạn có thể gặp phải sẽ giúp ích. Năm loại lỗi dưới đây không toàn diện nhưng là những nghi phạm có khả năng cao nhất.
Lỗi Logic (Logic Errors)
Lỗi logic xảy ra khi máy tính thực sự gặp phải thứ gì đó "không tính toán được". Đó là đầu ra được tạo bởi mã chương trình tạo ra kết quả không mong đợi, đôi khi là không thể xảy ra, vì logic của mã không theo dõi được hoặc các lập trình viên không dự liệu một tập hợp điều kiện hoặc đầu vào cụ thể.
Rò Rỉ Bộ Nhớ (Memory Leaks)
Rò rỉ bộ nhớ xảy ra khi một chương trình không trả lại bộ nhớ mà nó đã yêu cầu sau khi không còn cần nó. Theo thời gian, rò rỉ bộ nhớ để lại ít tài nguyên hơn cho các chương trình khác, dẫn đến hiệu suất giảm sút và, cuối cùng, lỗi runtime. Đây là một trường hợp thú vị vì phần mềm báo cáo lỗi runtime thường không phải là phần mềm bị rò rỉ bộ nhớ. Nó chỉ là nạn nhân của rò rỉ.
Chia Cho Không (Dividing by Zero)
Không thể chia cho không, vì vậy khi máy tính cố gắng làm điều đó, nó sụp đổ thành một hố đen. Chỉ đùa thôi! Nó sẽ làm sập chương trình với lỗi runtime kiểu "cannot divide by zero" (không thể chia cho không).
Đối Tượng Chưa Định Nghĩa (Undefined Objects)
Lỗi này thường liên quan đến Java và JavaScript, nơi các biến chưa được gán giá trị hoặc chưa được khai báo. Nói cách khác, không có dữ liệu trong một biến, hoặc mã tham chiếu đến một biến không tồn tại. Về cơ bản, lập trình viên đã làm sai cách nào đó.
Lỗi IO (IO Errors)
Lỗi IO hoặc Input/Output (Đầu vào/Đầu ra) xảy ra khi một chương trình cố gắng đọc hoặc ghi dữ liệu từ thiết bị lưu trữ và thất bại. Điều này có thể vì nhiều lý do, từ ổ đĩa bị ngắt kết nối đến ổ cứng lỗi hoặc phần cứng USB. Đĩa quang bị xước là nguyên nhân phổ biến khác của lỗi IO.
Vì vậy bạn đã gặp lỗi runtime, và nó làm bạn bực bội vì bạn đang cố gắng hoàn thành việc. Mặc dù chúng tôi đã đề cập ở trên rằng lỗi runtime có nhiều loại, và các lỗi cụ thể có thể gợi ý loại nào, nhưng có một số sửa chữa chung có thể hoạt động bất kể chi tiết.
Khởi Động Lại Máy Tính
Khởi động lại máy tính có thể giải quyết các vấn đề rò rỉ bộ nhớ hoặc xóa bất kỳ bộ nhớ cache dữ liệu tạm thời hoặc dữ liệu làm việc khác có thể đã khiến chương trình dừng lại. Nếu vấn đề biến mất sau khi khởi động lại, nó không giúp làm rõ nguyên nhân, nhưng đối với các vấn đề thỉnh thoảng, khởi động lại là giải pháp nhanh để thử.
Cập Nhật Ứng Dụng
Thường xuyên hơn không, lỗi runtime trong phần mềm kết quả từ các lỗi trong chính phần mềm. Khi một nhà phát triển phần mềm nhận ra các lỗi này, họ thường sẽ khắc phục vấn đề và phát hành bản cập nhật cho ứng dụng. Vì vậy, một trong những điều đầu tiên bạn nên làm là kiểm tra xem bản cập nhật cho phần mềm của bạn có sẵn không.
Có lẽ quan trọng hơn, khi bạn gặp lỗi runtime Windows, bạn nên báo cáo nó cho các nhà phát triển. Đôi khi có nút báo cáo bên cạnh thông báo lỗi; ở các thời điểm khác, bạn có thể phải chụp ảnh màn hình hoặc ghi lại mã lỗi và sau đó liên hệ qua email hoặc mạng xã hội. Báo cáo lỗi mới có thể đẩy nhanh việc có bản sửa lỗi.
Cập Nhật Windows
Lỗi runtime cũng có thể do lỗi hoặc các vấn đề khác trong chính Microsoft Windows, thường được khắc phục trong các bản cập nhật Windows. Các vấn đề nhỏ thường được giải quyết trong "hotfixes" (bản sửa lỗi gấp) là các bản cập nhật nhỏ khắc phục các vấn đề cụ thể khẩn cấp.
Thay vào đó, nếu một chương trình bắt đầu đưa ra lỗi runtime ngay sau bản cập nhật Windows, bạn có thể muốn xóa bản cập nhật cuối cùng cho đến khi các nhà phát triển cập nhật phần mềm của họ.
Cập Nhật Driver Lỗi Thời
Driver là phần mềm cho phép hệ điều hành điều khiển phần cứng của bạn, chẳng hạn như bộ chuyển đổi hiển thị (còn gọi là card đồ họa). Phần mềm mới hoặc phần mềm mới cập nhật có thể dựa vào các tính năng chỉ tồn tại trong phiên bản driver mới nhất, vì vậy khi bạn cập nhật driver cho các thành phần máy tính, bạn có thể khắc phục các lỗi runtime liên quan đến phần cứng.
Cài Đặt Lại Hoặc Sửa Chữa Ứng Dụng
Lỗi runtime có thể là kết quả của các tệp ứng dụng hoặc dữ liệu bị hỏng. Vì vậy khi tệp thực thi chương trình cố gắng truy cập dữ liệu nó cần để hoạt động, nó gặp lỗi vì dữ liệu đó sai hoặc thiếu.
Bằng cách gỡ cài đặt ứng dụng và cài đặt lại nó, bạn có thể ghi đè dữ liệu hỏng đó bằng bản sao mới. Bạn có thể không phải gỡ cài đặt ứng dụng trước. Nhiều ứng dụng sẽ cung cấp tùy chọn "repair" (sửa chữa) hoặc "verify" (xác minh) khi bạn chạy trình cài đặt lại hoặc cố gắng gỡ cài đặt chúng từ phần Programs and Features (Chương trình và tính năng) của Control Panel.
Đóng Tất Cả Các Ứng Dụng Khác
Lỗi runtime do rò rỉ bộ nhớ hoặc vì một ứng dụng cụ thể cần nhiều bộ nhớ hơn khả dụng có thể được giảm thiểu bằng cách đóng bất kỳ chương trình không cần thiết nào đang mở. Bạn cũng có thể muốn điều chỉnh kích thước file swap (file hoán đổi), để tạo chút không gian thoáng cho các ứng dụng không vừa trong RAM.
Nếu bạn chắc chắn lỗi runtime do dung lượng bộ nhớ và không phải do rò rỉ bộ nhớ, bạn cũng có thể cân nhắc nâng cấp lượng RAM trong máy tính để xử lý các tải trọng nặng hơn.
Chạy Windows Trong Safe Mode Hoặc Thực Hiện Clean Boot
Nếu bạn nghi ngờ các lỗi runtime bạn đang trải qua là kết quả của driver hoặc các ứng dụng phần mềm khác trong nền, bạn có thể sử dụng Safe Mode (Chế độ an toàn) hoặc clean boot (Khởi động sạch) để xác nhận.
Safe Mode là chế độ boot đặc biệt trong Windows chỉ tải driver và dịch vụ Windows tối thiểu. Nếu vấn đề biến mất dưới Safe Mode, bạn có thể khá chắc chắn vấn đề là liên quan đến driver (cập nhật chúng) hoặc dịch vụ Windows. Tham khảo hướng dẫn của chúng tôi về cách khởi động vào Safe Mode để xem có giúp ích không. Nếu có, bạn có thể muốn thử nghiệm vô hiệu hóa các dịch vụ trong tab services của MSConfig.
Clean boot gần như ngược lại của Safe Mode. Thay vì tải hệ điều hành tối thiểu, Windows vô hiệu hóa tất cả phần mềm khởi động của bên thứ ba. Nếu clean boot giải quyết lỗi runtime, đó có thể là ứng dụng của bên thứ ba cần được vô hiệu hóa, cập nhật hoặc thay thế. Tham khảo hướng dẫn của chúng tôi về cách thực hiện clean boot.
Cập Nhật Thành Phần Runtime
Phần mềm thường phụ thuộc vào các thư viện phần mềm chung và các thành phần runtime phần mềm chuẩn. Nếu những thứ này không được cài đặt, bị hỏng, hoặc phiên bản sai, nó có thể gây ra vấn đề. Ví dụ về các thành phần runtime như vậy bao gồm gói Microsoft Visual C++ redistributable.
Bạn có thể tải xuống VC++ redistributable cần thiết từ trang web Microsoft, nhưng nó thường đi kèm với phần mềm cần nó. Vì vậy, cài đặt lại hoặc sửa chữa ứng dụng cũng nên khôi phục thư viện runtime Visual C++. Đây là một trong những vấn đề thành phần runtime dễ nhận biết nhất, vì thông báo lỗi runtime thường chỉ định rằng đó là "C++ runtime error" (lỗi runtime C++).
Kiểm Tra Tệp Bị Hỏng
Hỏng dữ liệu xảy ra khi các 1 và 0 tạo nên tệp bị hỏng hoặc bị ghi đè vì lý do nào đó. Hư hỏng tệp hệ thống hoặc ứng dụng có thể dẫn đến lỗi runtime không mong đợi.
Bạn có thể chạy Windows System File Checker (SFC) để kiểm tra và sửa chữa hư hỏng tệp hệ thống. Đối với ứng dụng, hầu hết thời gian trình cài đặt sẽ có tùy chọn "repair" (sửa chữa) nếu bạn chạy nó mà không gỡ cài đặt ứng dụng trước. Với các client phần mềm như Steam, bạn cũng có thể sử dụng tùy chọn "verify" (xác minh) trên game của bạn để kiểm tra xem tệp có còn nguyên vẹn không.
Thực Hiện Quét Phần Mềm Độc Hại
Nhiều loại phần mềm độc hại tiêm mình vào mã đang chạy, làm hỏng tệp dữ liệu, hoặc thay đổi tệp thực thi. Tất cả những điều này có thể dẫn đến lỗi runtime. Để loại trừ phần mềm độc hại là lý do bạn gặp lỗi, hãy chạy quét sử dụng phần mềm antivirus hoặc antimalware yêu thích của bạn.
Thực Hiện Kiểm Tra Bộ Nhớ
Trước khi phần mềm chạy của bạn đến CPU để xử lý, nó dừng lại ở RAM. Nếu RAM của bạn bị lỗi, điều này có thể gây ra lỗi runtime khó theo dõi. Hãy chạy kiểm tra bộ nhớ và đảm bảo không phải vấn đề về bit bị lật ngược trong module bộ nhớ!