Se sei fortunato quando il modulo del tuo kernel si blocca, otterrai un oops con un log con molte informazioni, come i valori nei registri, ecc. Una di queste informazioni è la traccia dello stack (lo stesso vale per i core dump, ma all'inizio avevo chiesto questo per i moduli del kernel). Prendete questo esempio:Come sfruttare al meglio lo stack trace (dal kernel o core dump)?
[<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
La mia ipotesi è che il +<number1>/<number2>
ha qualcosa a che fare con l'offset dalla funzione in cui si è verificato l'errore. Cioè, controllando questo numero, forse guardando l'output del gruppo, dovrei essere in grado di scoprire la linea (meglio ancora, l'istruzione) in cui si è verificato questo errore. È corretto?
La mia domanda è: quali sono esattamente questi due numeri? Come li usi?
NON sapevo che puoi gdb il linux stesso! Questo e spettacolare! – Shahbaz
Dove si trova 'vmlinux'? Ho pensato che sarebbe stato il kernel di Linux stesso (in/boot) ma che è 'vmlinuz ...' e addr2line dice "Formato file non riconosciuto" Non è un grosso problema, dato che sono più interessato ai miei moduli. – Shahbaz
@Shahbaz vmlinuz è solo la versione compressa e/o spogliata di 'vmlinux'. BOth sarà generalmente nascosto nella cartella '/ boot'. Non ho il mio box Linux con me per controllare ora. Google in giro per i due :) Ecco alcuni antipasti. [One] (http://superuser.com/questions/62575/where-is-vmlinux-on-my-ubuntu-installation) e [Two] (http://superuser.com/questions/298826/how-do -i-uncompress-vmlinuz-to-vmlinux) –