Linux kernel 使用Olimex ARM-USB-OCD适配器在ARMv7上进行远程内核调试

Linux kernel 使用Olimex ARM-USB-OCD适配器在ARMv7上进行远程内核调试,linux-kernel,android-source,jtag,Linux Kernel,Android Source,Jtag,我目前正在尝试调试我的内核。我的目标是在我正在实现的新系统调用中设置断点。内核在远程Imx6q板上运行。我已经设置了JTAG调试器,可以将GDB连接到它并暂停执行 我的问题是调试符号。 我已将这些属性添加到defconfig中: CONFIG_GDB_SCRIPTS=y CONFIG_DEBUG_KERNEL=y CONFIG_RANDOMIZE_BASE=n CONFIG_FRAME_POINTER=y CONFIG_KGDB=y CONFIG_DEBUG_INFO=y 当我开始会话时: (

我目前正在尝试调试我的内核。我的目标是在我正在实现的新系统调用中设置断点。内核在远程Imx6q板上运行。我已经设置了JTAG调试器,可以将GDB连接到它并暂停执行

我的问题是调试符号。 我已将这些属性添加到defconfig中:

CONFIG_GDB_SCRIPTS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_RANDOMIZE_BASE=n
CONFIG_FRAME_POINTER=y
CONFIG_KGDB=y
CONFIG_DEBUG_INFO=y
当我开始会话时:

(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.
我可以手动附加符号文件,但需要提供附加地址

(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
我想停在这里的函数是:

wandboard_qca:/ # cat /proc/kallsyms | grep sys_keeper_get_state               
c003e0ac T sys_keeper_get_state
它是在kernel/sys.c中实现的

我的问题是,如何将我的符号正确地附加到正确的地址


感谢您的回答

我只需要加载le内核二进制文件

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

然后连接到远程目标。

我只需要加载le内核二进制文件

file .out/target/product/wandboard_qca/kernel-imx/vmlinux
然后连接到远程目标