Trong khi gỡ lỗi hạt nhân Linux, chúng tôi có thể sử dụng nhiều công cụ, ví dụ, trình gỡ lỗi (KDB, KGDB), bán phá giá khi bị lỗi (LKCD), bộ công cụ truy tìm (LTT, LTTV, LTTng), công cụ hạt nhân tùy chỉnh (dprobes, kprobes). Trong phần sau tôi đã cố gắng tóm tắt hầu hết trong số họ, hy vọng những điều này sẽ giúp ích cho bạn.
Công cụ LKCD (Linux Kernel Crash Dump) cho phép hệ thống Linux ghi nội dung bộ nhớ khi xảy ra sự cố. Các bản ghi này có thể được phân tích thêm cho nguyên nhân gốc rễ của sự cố.Tài nguyên về LKCD
Rất tiếc khi hạt nhân phát hiện một vấn đề, nó in ra thông báo Rất tiếc. Một thông điệp như vậy được tạo ra bởi các câu lệnh printk trong trình xử lý lỗi (arch/*/kernel/traps.c). Một bộ đệm vòng chuyên dụng trong hạt nhân đang được sử dụng bởi các báo cáo printk. Rất tiếc có chứa thông tin như, CPU nơi Oops xảy ra trên, nội dung của thanh ghi CPU, số lượng Rất tiếc, mô tả, ngăn xếp lại dấu vết và những thứ khác. Tài nguyên liên quan đến hạt nhân Oops
Dynamic Probes là một trong những công cụ gỡ lỗi phổ biến cho Linux mà được phát triển bởi IBM. Công cụ này cho phép đặt một "đầu dò" ở hầu hết mọi nơi trong hệ thống, trong cả không gian người dùng và hạt nhân. Đầu dò bao gồm một số mã (được viết bằng ngôn ngữ chuyên dụng, theo định hướng ngăn xếp) được thực thi khi điều khiển chạm vào điểm đã cho. Tài nguyên về Probe động được liệt kê dưới đây
Linux Trace Toolkit là một bản vá hạt nhân và một bộ các tiện ích liên quan mà cho phép truy tìm của các sự kiện trong hạt nhân. Dấu vết bao gồm thông tin thời gian và có thể tạo ra một bức tranh hoàn chỉnh hợp lý về những gì đã xảy ra trong một khoảng thời gian nhất định. Nguồn lực của LTT, LTT Viewer và LTT Next Generation
MEMWATCH là một bộ nhớ nguồn công cụ phát hiện lỗi mở. Nó hoạt động bằng cách xác định MEMWATCH trong câu lệnh gcc và bằng cách thêm một tệp tiêu đề vào mã của chúng tôi. Thông qua điều này chúng ta có thể theo dõi rò rỉ bộ nhớ và bộ nhớ bị hỏng. Tài nguyên về MEMWATCH
ftrace là một khuôn khổ tracing tốt cho Linux kernel. ftrace dấu vết các hoạt động bên trong của hạt nhân. Công cụ này được bao gồm trong hạt nhân Linux trong 2.6.27. Với các plugin tracer khác nhau, ftrace có thể được nhắm vào các tracepoint tĩnh khác nhau, chẳng hạn như lên lịch sự kiện, ngắt, I/O ánh xạ bộ nhớ, chuyển đổi trạng thái nguồn CPU và các hoạt động liên quan đến hệ thống tệp và ảo hóa. Ngoài ra, theo dõi năng động của các cuộc gọi hàm hạt nhân có sẵn, tùy chọn hạn chế cho một tập con của các hàm bằng cách sử dụng các bóng tối, và với khả năng tạo ra các biểu đồ cuộc gọi và cung cấp mức sử dụng ngăn xếp.Bạn có thể tìm thấy hướng dẫn tốt về ftrace tại https://events.linuxfoundation.org/slides/2010/linuxcon_japan/linuxcon_jp2010_rostedt.pdf
ltrace là một tiện ích gỡ lỗi trong Linux, được sử dụng để hiển thị các cuộc gọi mà ứng dụng không gian người dùng thực hiện cho thư viện được chia sẻ. Công cụ này có thể được sử dụng để theo dõi bất kỳ cuộc gọi chức năng thư viện động nào. Nó chặn và ghi lại các cuộc gọi thư viện động được gọi bởi quá trình thực hiện và các tín hiệu được nhận bởi quá trình đó. Nó cũng có thể chặn và in các cuộc gọi hệ thống được thực hiện bởi chương trình.
KDB là debugger trong hạt nhân của hạt nhân Linux. KDB theo giao diện kiểu vỏ đơn giản. Chúng tôi có thể sử dụng nó để kiểm tra bộ nhớ, sổ đăng ký, danh sách quy trình, dmesg và thậm chí thiết lập các điểm dừng để dừng ở một vị trí nhất định. Thông qua KDB chúng ta có thể thiết lập các điểm ngắt và thực thi một số điều khiển chạy hạt nhân cơ bản (Mặc dù KDB không phải là trình gỡ rối mức nguồn). Một số nguồn ích về KDB
KGDB được thiết kế để được sử dụng như một trình gỡ lỗi cấp nguồn cho hạt nhân Linux. Nó được sử dụng cùng với gdb để gỡ lỗi hạt nhân Linux. Cần có hai máy để sử dụng kgdb. Một trong những máy này là máy phát triển và máy kia là máy mục tiêu. Hạt nhân được gỡ lỗi chạy trên máy mục tiêu. Kỳ vọng là gdb có thể được sử dụng để "đột nhập" vào hạt nhân để kiểm tra bộ nhớ, các biến và xem thông tin ngăn xếp cuộc gọi tương tự như cách một nhà phát triển ứng dụng sử dụng gdb để gỡ lỗi một ứng dụng. Có thể đặt các điểm ngắt trong mã hạt nhân và thực hiện một số bước thực hiện hạn chế. Một số nguồn ích về KGDB
Cũng xem lwn.net/Articles/280912 (tìm kiếm cho kgdb) –
Ý anh là gì bởi * sống *? Bạn hiện đang chạy hoặc? Hoặc cũng là một trong một máy ảo? –