我正在学习linux内核调试,dmesg是输出内核调试日志的工具:
...
[ 2.988000] Trace:
[ 2.988000] [<ffffffff80942810>] __warn+0x160/0x190
[ 2.988000] [<ffffffff8111ae9c>] dwc3_probe+0xc1c/0x1e60
[ 2.988000] [<ffffffff8111ae9c>] dwc3_probe+0xc1c/0x1e60
[ 2.988000] [<ffffffff80fe4434>] platform_drv_probe+0x34/0x90
...
- 问题1:IIUC,
__warn
是核函数,什么意思0x160/0x190
?
答案1
[10991.880408] EIP: 0060:[<c06969d4>] EFLAGS: 00210246 CPU: 0 [10991.880411] EIP is at iret_exc+0x7d0/0xa59
这会直接或以符号+偏移量的形式为您提供错误指令指针。斜杠后面的部分是函数的大小。
假设类似的格式,ffffffff80942810
是地址,__warn
是符号,0x160
是从该符号的偏移量,0x190
是函数的大小__warn
。