Nếu bạn may mắn khi mô-đun hạt nhân của bạn gặp sự cố, bạn sẽ nhận được một bản ghi có nhiều thông tin, chẳng hạn như các giá trị trong sổ đăng ký, v.v. Một thông tin như vậy là theo dõi ngăn xếp (Điều này cũng đúng với các vùng lõi, nhưng ban đầu tôi đã hỏi điều này cho các mô-đun hạt nhân). Lấy ví dụ này:Làm thế nào để sử dụng tốt stack trace (từ hạt nhân hoặc lõi dump)?
[<f97ade02>] ? skink_free_devices+0x32/0xb0 [skin_kernel]
[<f97aba45>] ? cleanup_module+0x1e5/0x550 [skin_kernel]
[<c017d0e7>] ? __stop_machine+0x57/0x70
[<c016dec0>] ? __try_stop_module+0x0/0x30
[<c016f069>] ? sys_delete_module+0x149/0x210
[<c0102f24>] ? sysenter_do_call+0x12/0x16
Tôi đoán là +<number1>/<number2>
có liên quan đến chức năng bù trừ lỗi đã xảy ra. Đó là, bằng cách kiểm tra con số này, có lẽ nhìn vào đầu ra lắp ráp tôi sẽ có thể tìm ra dòng (tốt hơn chưa, hướng dẫn) trong đó lỗi này đã xảy ra. Đúng không?
Câu hỏi của tôi là, hai số này chính xác là gì? Làm thế nào để bạn sử dụng chúng?
Tôi KHÔNG biết bạn có thể gdb chính linux! Điều này thật tuyệt! – Shahbaz
'vmlinux' ở đâu? Tôi nghĩ rằng đó sẽ là hạt nhân Linux chính nó (trong/boot) nhưng đó là 'vmlinuz ...' và addr2line nói "Định dạng tập tin không được công nhận" Không phải là một việc lớn mặc dù, như tôi quan tâm nhiều hơn trong các mô-đun của riêng tôi. – Shahbaz
@Shahbaz vmlinuz chỉ là phiên bản nén và/hoặc bị tước bỏ của vmlinux'. BOth nói chung sẽ nằm trong thư mục '/ boot'. Tôi không có hộp linux của tôi với tôi để kiểm tra ngay bây giờ. Google xung quanh cho hai :) Dưới đây là một số người mới bắt đầu. [One] (http://superuser.com/questions/62575/where-is-vmlinux-on-my-ubuntu-installation) và [Hai] (http://superuser.com/questions/298826/how-do -i-uncompress-vmlinuz-to-vmlinux) –