KGDB

From Linux PARISC Wiki
Revision as of 17:54, 4 April 2019 by Sven Schnelle (Talk | contribs)

Jump to: navigation, search

NOTE: kgdb is not merged upstream yet

Required configuration to use KGDB/KDB for kernel debugging

Make sure your .config contains:

CONFIG_KGDB=y
CONFIG_KGDB_SERIAL_CONSOLE=y

If you want to be able to use KDB (a KGDB frontend running on the console):

CONFIG_KGDB_KDB=y

To enable kdb/kgdb, you need to pass the device you want to use to kgdb, either via sysfs file or palo. My palo configuration looks like this:

0/vmlinuz HOME=/ root=/dev/sda5 panic_timeout=60 panic=10 console=ttyS0,115200 kgdboc=ttyS0,115200
 0: 0/vmlinuz
 1: HOME=/
 2: root=/dev/sda5
 3: panic_timeout=60
 4: panic=10
 5: console=ttyS0,115200
 6: kgdboc=ttyS0,115200
<#>    edit the numbered field
'b'    boot with this command line
'r'    restore command line
'l'    list dir
'x'    reset and reboot machine
? 0

If you want to enable kgdb via sysfs, do

echo ttyS0,115200 >/sys/module/kgdboc/parameters/kgdboc

Most of the PA-RISC machines have at least two serial ports, so you could also use ttyS1. In my examples i'm using ttyS0, which is also the console port.

Entering kdb

There are several ways to enter kgdb:

  • via 'echo g >/proc/sysrq-trigger
  • sending a break g on the serial console, with minicom that is Ctrl-A f g
  • It will also show up on a kernel crash, as long as there's no panic command line option used

When entered, kdb will look like this:

Entering kdb (current=0xefcccdb0, pid 0) on processor 1 due to Keyboard Entry
[1]kdb> 

The [1] before the kdb prompt is the processor number kdb is currently on.

help shows you the command list:

[1]kdb> help Command Usage Description


md <vaddr> Display Memory Contents, also mdWcN, e.g. md8c1 mdr <vaddr> <bytes> Display Raw Memory mdp <paddr> <bytes> Display Physical Memory mds <vaddr> Display Memory Symbolically mm <vaddr> <contents> Modify Memory Contents go [<vaddr>] Continue Execution rd Display Registers rm <reg> <contents> Modify Registers ef <vaddr> Display exception frame bt [<vaddr>] Stack traceback btp <pid> Display stack for process <pid> bta [D|R|S|T|C|Z|E|U|I|M|A]

                                   Backtrace all processes matching state flag

btc Backtrace current process on each cpu btt <vaddr> Backtrace process given its struct task address env Show environment variables set Set environment variables help Display Help Message ? Display Help Message cpu <cpunum> Switch to new cpu kgdb Enter kgdb mode ps [<flags>|A] Display active task list pid <pidnum> Switch to another task reboot Reboot the machine immediately lsmod List loaded kernel modules sr <key> Magic SysRq key dmesg [lines] Display syslog buffer defcmd name "usage" "help" Define a set of commands, down to endefcmd kill <-signal> <pid> Send a signal to a process summary Summarize the system per_cpu <sym> [<bytes>] [<cpu>]

                                   Display per_cpu variables

grephelp Display help on | grep bp [<vaddr>] Set/Display breakpoints bl [<vaddr>] Display breakpoints bc <bpnum> Clear Breakpoint be <bpnum> Enable Breakpoint bd <bpnum> Disable Breakpoint ss Single Step dumpcommon Common kdb debugging dumpall First line debugging dumpcpu Same as dumpall but only tasks on cpus ftdump [skip_#lines] [cpu] Dump ftrace log

Personal tools