2

我想调试我的代码,它也有一些内核模块。我能够在内核和我的代码中设置断点。执行操作会命中内核代码中设置的断点,但不会命中我代码中的断点。

目标机器:要在其上调试代码的机器主机:用于调试代码的机器

遵循的步骤:在主机上:

$ 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() 之类的内核函数设置断点时,就会遇到断点。

4

0 回答 0