GNU Debugger

  • Note: This guide is by no means a Howto, just some short instructions to use GDB on OpenWrt.
    Please look upstream for multilingual instructions and manuals, like e.g. here: https://sourceware.org/gdb/documentation/

in menuconfig enable gdb

Advanced configuration options (for developers) -> Toolchain Options ->  Build gdb

and gdbserver

Development -> gdbserver

Add CFLAGS to the package Makefile and recompile it.

TARGET_CFLAGS += -ggdb3

Alternatively recompile the package with CONFIG_DEBUG set

make package/busybox/{clean,compile} V=s CONFIG_DEBUG=y

Or you can enable debug info in menuconfig

Global build settings > Compile packages with debugging info

Disable stripping in your package in Makefile

STRIP:=:

You might also want to disable stripping in menuconfig

Global build settings > Binary stripping method > None

Start gdbserver on target (router)

gdbserver :9000 /bin/ping example.org

Start gdb on host (in compiling tree)

./scripts/remote-gdb 192.168.1.1:9000 ./build_dir/target-*/busybox-*/busybox

now you have a gdb shell. Set breakpoints, start program, backtrace etc.

(gdb) b source-file.c:123
(gdb) c
(gdb) bt

If you want to restart the program, you'll need to set the remote path and arguments

(gdb) set remote exec-file /usr/bin/blah
(gdb) set args -v -x -merry-fishing
(gdb) run
  • Last modified: 2026/02/26 07:09
  • by prohorp