2012-03-13 38 views
17

Tôi đang sử dụng ROM tùy chỉnh Android trên thiết bị của mình, cũng có tùy chỉnh boot.img (tùy chỉnh kernel + cmdline + ramdisk). Bây giờ tôi muốn để có thể xem các bản ghi hạt nhân ngay lập tức sau khi hoảng loạn hạt nhân, nhưng tiếc là tôi không thể sử dụng một giao diện điều khiển nối tiếp.Android: Cách nhận nhật ký hạt nhân sau khi hoảng loạn hạt nhân?

Tin tốt: Có vẻ như có một số nguồn/mô-đun trong hạt nhân Linux của Android được viết chính xác cho mục đích này. Ví dụ, những dòng sau được kích hoạt trong file config của tôi cho kernel:

CONFIG_ANDROID_RAM_CONSOLE=y 
CONFIG_ANDROID_RAM_CONSOLE_ENABLE_VERBOSE=y 
CONFIG_APANIC=y 
CONFIG_APANIC_PLABEL="oem_log" 

Vấn đề của tôi là: Sau khi tôi buộc phải hoảng sợ hạt nhân để kiểm tra điều này, tức là bằng cách tải một module hoảng sợ hạt nhân đơn giản với insmod panic.ko , có vẻ như không có nhật ký nào được ghi vào MTD có tên oem_log (tồn tại trên thiết bị của tôi). Thứ hai, RAM cũng không chứa các bản ghi sau khi khởi động lại vì nó dường như bị xóa - hoặc các bản ghi cũng không được ghi.

Vậy làm cách nào để có thể nhận nhật ký hạt nhân sau khi bị hoảng loạn? Ngoài ra nó sẽ rất hữu ích nếu có một cách tôi có thể kiểm tra APANIC trên hệ thống đang chạy. Có lẽ bằng cách sử dụng hệ thống gỡ lỗi hạt nhân? Hiện tại tôi khá mới mẻ với điều này.

Cảm ơn bạn đã giúp đỡ!

Trả lời

23

Đối với tôi,

cat /proc/last_kmsg 

sau khi khởi động lại (gây ra bởi sự hoảng sợ hạt nhân trong insmod) thực hiện thông điệp danh sách có liên quan đến vụ tai nạn, như

[ 424.909515] Kernel panic - not syncing: Fatal exception 
[ 424.909606] Backtrace: 
[ 424.909790] [<c005a5ec>] (dump_backtrace+0x0/0x10c) from [<c05f38dc>] (dump_stack+0x18/0x1c) 
[ 424.909973] r6:c5cccf00 r5:00000000 r4:c08505a0 r3:00000000 

Vì vậy, bạn ít nhất có thể thử. Tôi đang làm việc với Linux 3.0.31-g4f6d371 trên Galaxy Nexus.

+0

Tôi đánh dấu đây là câu trả lời đúng - nhưng nó chỉ có vẻ hoạt động nếu chức năng này được triển khai chính xác cho thiết bị cụ thể. Mà, đối với tôi (tại thời điểm tôi hỏi câu hỏi và cho thiết bị cụ thể của tôi) không phải là trường hợp. – mreichelt

+1

Tệp này có tồn tại không là thiết bị không bị phát hiện –

+0

Không tồn tại, phiên bản hạt nhân 3.0.8+. – ogurets

-4

Nhật ký hạt nhân Linux có thể được truy cập với lệnh dmesg. Bạn có thể đọc về Hệ thống ghi nhật ký Android here.

+3

Không, bạn có thể' t. Khi hoảng loạn hạt nhân xảy ra, tất cả các chương trình không gian của người dùng sẽ bị dừng ngay lập tức, vì vậy bạn không thể phát hiện nguyên nhân của sự hoảng loạn. Điều này là tương tự cho dmesg,/proc/kmsg và logcat. – mreichelt

1

Tôi gặp phải sự cố tương tự về việc thu thập nhật ký tắt máy trong Android. Tôi đã đăng câu hỏi này từ lâu và nó có 2 cách tiếp cận. Tôi sử dụng cái thứ 2 là cái thứ nhất không làm việc cho tôi. Đây là câu hỏi

Where does Android store shutdown logs?

Hy vọng điều này sẽ hữu ích.

+0

Thật không may, tất cả các tệp được mô tả chỉ có sẵn nếu mô-đun APANIC hoạt động chính xác - đó là những gì tôi đang cố gắng đạt được ... – mreichelt

+0

@mreichelt Không may mắn khi kết nối với 'adb' và cố gắng kéo' kmsg'? –

+0

kmsg là nhật ký * hiện tại *. Tôi muốn lấy nhật ký hạt nhân * sau * xảy ra hiện tượng hoảng loạn hạt nhân, tức là khi hệ thống bị lỗi và thiết bị được khởi động lại. Đó là những gì APANIC dành cho. – mreichelt

8

Còn thư mục /data/dontpanic thì sao? Sau khi hoảng loạn hạt nhân xảy ra, bạn có thể kết nối cáp USB với thiết bị Android của mình và kiểm tra các tệp trong thư mục đó qua ADB.

Tôi tìm thấy thư mục này chứa một số tệp apanic sau khi xảy ra hiện tượng hoảng loạn hạt nhân. Ví dụ, nếu một hoảng loạn hạt nhân vừa xảy ra và bạn đi kiểm tra thư mục, bạn có thể thấy hai tập tin sau đây:

apanic_console

apanic_threads

Bạn có thể tìm hiểu trong apanic_threads mà thread/quá trình đang chạy khi hoảng loạn hạt nhân xảy ra. Trong apanic_console bạn có thể tìm hiểu thêm thông tin như theo dõi ngăn xếp và giá trị của một số thanh ghi quan trọng: PC, LR, v.v.
Chúng sẽ giúp bạn bắt đầu gỡ lỗi.

+0

Tôi có thư mục này, nhưng không có tệp nào bên trong (sau khi hoảng sợ). Đã thực hiện 'find/-name' * panic * "'và tìm thấy một cái gì đó thú vị:"/sys/module/kernel/parameters/panic "và"/proc/sys/kernel/panic ", cả hai đều chứa" 2 "trên thiết bị của tôi. – ogurets

2

Android tạo bảng điều khiển RAM và cố gắng lưu bộ đệm thông điệp hạt nhân cuối cùng cho bạn trong RAM (giả sử sức mạnh không xuất hiện). Bạn có thể truy cập tập tin này thông qua giao diện proc và trên hệ thống của tôi nó có thể đọc được trên thế giới:

cat /proc/last_kmsg 

Để biết thêm thông tin xem các trình điều khiển mã hạt nhân @/dàn/android/ram_console.c

1

Dường như ở Android -7,0 hoặc cao hơn, các bản ghi last_kmesg được chuyển đến:/sys/fs/PStore/console-ramoops, vì vậy hãy thử:

cat /sys/fs/pstore/console-ramoops 

nó hoạt động tốt đối với tôi về mối quan hệ-5x

Các vấn đề liên quan