1

I'm currently trying to debug my kernel. My goal is to put a breakpoint in a new syscall that I am implementing. The kernel runs on a remote Imx6q board. I've setup the JTAG debugger and I can connect GDB to it and pause the execution.

My issue is whith debug symbols. I've added those properties to my defconfig :

CONFIG_GDB_SCRIPTS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_RANDOMIZE_BASE=n
CONFIG_FRAME_POINTER=y
CONFIG_KGDB=y
CONFIG_DEBUG_INFO=y

When I start a session :

(gdb) tar ext :3333
Remote debugging using :3333
warning: No executable has been specified and target does not support
determining executable automatically.  Try using the "file" command.
0xa7780ef0 in ?? ()
(gdb) c
Continuing.

I can attach a symbol file by hand, but it is required to provide an address to attach it.

(gdb) add-symbol-file /home/tlavocat/development/android/out/target/product/wandboard_qca/kernel-imx/kernel/sys.o 
The address where /home/tlavocat/development/android/out/target/product/wandboard_qca/kernel-imx/kernel/sys.o has been loaded is missing

The function I want to stop in is this one :

wandboard_qca:/ # cat /proc/kallsyms | grep sys_keeper_get_state               
c003e0ac T sys_keeper_get_state

And it is implemented in kernel/sys.c.

My question is, how can I attach my symbols correctly to the right address ?

Thank's for your answers

Thomas
  • 21
  • 3

1 Answers1

0

I simply needed to load le kernel binary.

file .out/target/product/wandboard_qca/kernel-imx/vmlinux

And then connect to the remote target.

Thomas
  • 21
  • 3