커널 호출 추적에 명령어 주소를 표시하는 방법은 무엇입니까?

커널 호출 추적에 명령어 주소를 표시하는 방법은 무엇입니까?

[<XXXXXXXX>]커널 모듈에서 오류가 발생할 때 호출 추적에 주소를 표시하는 방법은 무엇입니까? 몇 가지 커널 구성 옵션을 찾고 있었지만 운이 없었습니다.

내 dmesg 출력

...
[26246.257523] Call Trace:
[26246.257530]  do_one_initcall+0x59/0x240
[26246.257540]  do_init_module+0x5c/0x230
[26246.257545]  load_module+0x2725/0x29e0
[26246.257556]  ? __do_sys_finit_module+0xbb/0x120
[26246.257560]  __do_sys_finit_module+0xbb/0x120
[26246.257567]  do_syscall_64+0x4e/0x150
[26246.257573]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[26246.257577] RIP: 0033:0x7f3680ff5f8d
...

주소가 포함된 다른 dmesg 출력

...
Call Trace:
 [<c010102d>] ? _stext+0x2d/0x170
 [<c01708e4>] ? __vunmap+0xa4/0xf0
 [<c0170981>] ? vfree+0x21/0x30
 [<c014b698>] ? load_module+0x19b8/0x1a40
 [<c035e965>] ? __mutex_unlock_slowpath+0xd5/0x140
 [<c0140da6>] ? trace_hardirqs_on_caller+0x106/0x150
 [<c014b7aa>] ? sys_init_module+0x8a/0x1b0
 [<c0140da6>] ? trace_hardirqs_on_caller+0x106/0x150
 [<c0240a08>] ? trace_hardirqs_on_thunk+0xc/0x10
 [<c0103407>] ? sysenter_do_call+0x12/0x43
...

편집: 커널 버전 4.19에서 작동합니다. 이 페이지에 따르면https://www.kernel.org/doc/html/v4.19/admin-guide/bug-hunting.html, 디버그 커널에 표시되어야 한다고 생각했는데 DEBUG_KERNEL, DEBUG_INFO, KALLSYMS 및 KALLSYMS_ALL이 모두 켜져 있습니다.

edit2: dumpstack.c의 코드를 보면 이전 커널에서는 인쇄되고 더 이상 최신 커널에서는 인쇄되지 않는 것 같습니다.

관련 정보