SysRq debugger can help you to obtain some information from oops-ed kernel. This feature is available since 026test017 kernel.
Contents
Features
SysRq debugger can do one of the following:
- Dump memory at specified address
- Write arbitrary value to memory at specified address
- Resolve symbol address by its name
How to use it
To enter debug mode press SysRq-g. After this the following commands will be available:
- SysRq-d - dump memory
- SysRq-w - write to memory
- SysRq-r - resolve symbol
- SysRq-x - go on dumping memory
- ... from the latest address dumped with -d
- ... from the address you wrote to with -w
- ... from the begginning of the symbol resolved with -r
- SysRq-q - quit debugger
After entering -d, -w or -r state you must enter address to work with (and the value you want to write if you do). Simply do this by pressing according keys while holding Alt-StsRq.
If you need to enter the upper case letter or the underbar (_
) while typing a symbol name then you need to press and release shift and then the letter or minus (-
).
At the end press enter.
Working with proc
There is a /proc/sysrq-trigger entry which triggers sysrq events. You may send a string to it to trigger commands one by one. There is one note about it - string must end with '\r' character.
Examples
Here are some examples of how to use debugger
Dump memory
# echo -n -e 'gd0xc0000000\rq' > /proc/sysrq-trigger
will dump memory region of 512 bytes
# echo -n -e 'gxq' > /proc/sysrq-trigger
will dump the next 512 bytes of memory
Write to memory
# echo -n -e 'gw0xc0000000-0x12345678\rq' > /proc/sysrq-trigger
will write 0x12345678 at 0xc0000000
Resolve symbol
# echo -n -e 'grschedule\rq' > /proc/sysrq-trigger
will print you an address schedule() function starts from
# echo -n -e 'gxq' > /proc/sysrq-trigger
will dump first 512 bytes of it
Note -n and -e keys to echo command.