我試圖在Linux崩潰轉儲中調試USER進程。如何在Linux內核崩潰轉儲中檢查「USER進程」的回溯
正常的步驟去崩潰轉儲是:
- 轉到將轉儲所在的路徑。
- 使用命令
crash kernel_link dump.201104181135
。
其中kernel_link
是我爲vmlinux映像創建的軟鏈接。
現在您將處於CRASH提示狀態。 如果您運行的命令foreach <PID Of the process> bt
如:
crash> **foreach 6920 bt**
**PID: 6920 TASK: ffff88013caaa800 CPU: 1 COMMAND: **"**climmon**"****
#0 [ffff88012d2cd9c8] **schedule** at ffffffff8130b76a
#1 [ffff88012d2cdab0] **schedule_timeout** at ffffffff8130bbe7
#2 [ffff88012d2cdb50] **schedule_timeout_uninterruptible** at ffffffff8130bc2a
#3 [ffff88012d2cdb60] **__alloc_pages_nodemask** at ffffffff810b9e45
#4 [ffff88012d2cdc60] **alloc_pages_curren**t at ffffffff810e1c8c
#5 [ffff88012d2cdc90] **__page_cache_alloc** at ffffffff810b395a
#6 [ffff88012d2cdcb0] **__do_page_cache_readahead** at ffffffff810bb592
#7 [ffff88012d2cdd30] **ra_submit** at ffffffff810bb6ba
#8 [ffff88012d2cdd40] **filemap_fault** at ffffffff810b3e4e
#9 [ffff88012d2cdda0] **__do_fault** at ffffffff810caa5f
#10 [ffff88012d2cde50] **handle_mm_fault** at ffffffff810cce69
#11 [ffff88012d2cdf00] **do_page_fault** at ffffffff8130f560
#12 [ffff88012d2cdf50] **page_fault** at ffffffff8130d3f5
RIP: 00007fd02b7e9071 RSP: 0000000040e86ea0 RFLAGS: 00010202
RAX: 0000000000000000 RBX: 0000000000000000 RCX: 00007fd02b7e9071
RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000040e86ec0
RBP: 0000000040e87140 R8: 0000000000000800 R9: 0000000000000000
R10: 0000000000000000 R11: 0000000000000202 R12: 00007fff16ec43d0
R13: 00007fd02bcadf00 R14: 0000000040e87950 R15: 0000000000001000
ORIG_RAX: ffffffffffffffff CS: 0033 SS: 002b
如果檢查上述回溯它顯示了用於調度/處理頁面錯誤的內核函數,但不是被用戶過程中(這裏例如執行的功能。 climmon
)。 所以我不能調試這個過程,因爲我無法看到在這個過程中執行的功能。 任何人都可以幫助我解決這個問題嗎?