如何理解dmesg中的Trace?

如何理解dmesg中的Trace?

我正在学习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

这个 Stack Overflow 上的答案:

[10991.880408] EIP: 0060:[<c06969d4>] EFLAGS: 00210246 CPU: 0
[10991.880411] EIP is at iret_exc+0x7d0/0xa59

这会直接或以符号+偏移量的形式为您提供错误指令指针。斜杠后面的部分是函数的大小。

假设类似的格式,ffffffff80942810是地址,__warn是符号,0x160是从该符号的偏移量,0x190是函数的大小__warn

相关内容