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