私は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
...
- Q1: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
。