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

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
This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2023/03/09 10:15
  • by tatami