我想调试我的代码,它也有一些内核模块。我能够在内核和代码中设置断点。执行操作会遇到内核代码中设置的断点,但不会触及我的代码中的断点。
目标机器:要调试代码的机器 主机:用于调试代码的机器
遵循的步骤: 主持人:
$ gdb vmlinux
(vmlinux copied from target machine )
$ gdb> target remote /dev/ttyS1
$ cont
continuing
目标: $ insmod mymodule.ko $ cd / sys / module / mymodule / sections / $ cat .data $ cat .rodata $ cat .bss $ cat .text
$ echo "g" > /proc/sysrq-trigger
在主持人身上:
$ add-symbol-file <module_name> <address> \
-s .bss <address> \
-s .rodata <address> \
-s .data <address>
$ b file_name //set break points
$ c
continuing
目标: 执行命令(程序).....但它没有命中断点......完成执行而不会遇到断点。
但是当我尝试将断点设置为某些内核函数(如vfs_read())时,正在触发断点。