如果你很幸運當你的內核模塊崩潰時,你會得到一個帶有很多信息的日誌,比如寄存器中的值等。一個這樣的信息是堆棧跟蹤(對於核心轉儲也是如此,但我最初問這個內核模塊)。就拿這個例子:如何充分利用堆棧跟蹤(從內核或核心轉儲)?
[<f97ade02>] ? skink_free_devices+0x32/0xb0 [skin_kernel]
[<f97aba45>] ? cleanup_module+0x1e5/0x550 [skin_kernel]
[<c017d0e7>] ? __stop_machine+0x57/0x70
[<c016dec0>] ? __try_stop_module+0x0/0x30
[<c016f069>] ? sys_delete_module+0x149/0x210
[<c0102f24>] ? sysenter_do_call+0x12/0x16
我的猜測是,+<number1>/<number2>
有事情做與已經發生了誤差函數的偏移量。也就是說,通過檢查這個數字,或許看看程序集輸出,我應該能夠找出發生該錯誤的那一行(更好的是,指令)。那是對的嗎?
我的問題是,這兩個數字究竟是什麼?你如何利用它們?
我不知道你可以gdb linux本身!這太棒了! – Shahbaz 2012-04-16 12:13:10
雖然'vmlinux'在哪裏?我認爲這將是Linux內核本身(在/ boot中),但是'vmlinuz ...'和addr2line說「文件格式不被識別」雖然沒有什麼大不了,因爲我對自己的模塊更感興趣。 – Shahbaz 2012-04-16 12:15:14
@Shahbaz vmlinuz只是'vmlinux'的壓縮和/或剝離版本。 BOth通常會放在'/ boot'文件夾中。我現在沒有和我一起檢查我的linux系統。谷歌周圍的兩個:)這裏有一些首發。 [One](http://superuser.com/questions/62575/where-is-vmlinux-on-my-ubuntu-installation)和[Two](http://superuser.com/questions/298826/how-do -i-uncompress-vmlinuz-to-vmlinux) – 2012-04-16 12:23:37