Linuxカーネルデバッグ その8(ソースデバッグ)

CCSでLinuxのソースデバッグを行う。ここでは、例としてファイル書き込み時に関数がブレークすることを確認する。

 

手順

1. XDSv100、BeagleBoneBlack、ホストPCを接続する。

 

2. ターミナルからscreenコマンドで接続した状態でBeagleBoneBlackの電源を投入する。U-Bootが起動するので、何かキーを押して、コマンド入力待ち状態にする。

f:id:mffukui:20180812230518p:plain

 

3. CCSを起動する。workspaceは以前使用したものを選ぶ。ここではデフォルトの「workspace_v8」を選択する。

 

4. 「Target Configurations」ウィンドウからUser Defined内のBeagleBoneBlack.ccxmlを右クリックし、「Launch Selected Configuration」を選ぶ。


5.画面がDebug画面に切り替わる。この状態ではまだ接続していない。

f:id:mffukui:20180812232006p:plain


6.「Texas Instruments XDS 100v3 USB Debug Probe_0/CortxA8」を選択し、右クリックで「Connect Target」を選ぶ。

f:id:mffukui:20180812232104p:plain


→GELが実行され、CortexA8がSuspended状態になる。

f:id:mffukui:20180812233940p:plain

 

7.実行ボタン(緑の矢印)を押下すると、CPUが走りだし、Linuxが起動する。

f:id:mffukui:20180812234016p:plain

linux起動後、ログインしておく。


8. シンボルファイルのロードを行う。CCSのメニューで「Run」→「Load」→「Load Symbols」を選択し、vmlinuxファイルを指定する。指定するファイルはkernel_src/kernel/kernel/vmlinux。

f:id:mffukui:20180812234136p:plain

f:id:mffukui:20180812234200p:plain

 

9. CCSのメニューから「File」→「Open File」を選択し、ブレークを貼るファイルを開く。ここでは、kernel_src/kernel/kernel/fs/ext4/file.cを開く。

 

10. ブレークする関数を探し、ブレークポイントを貼る。右クリックし、「Breakpoint」→「Hardware Breakpoint」を選択する。

f:id:mffukui:20180812234220p:plain

 →ブレークポイントが張られる。

f:id:mffukui:20180812234245p:plain

 

11.echoコマンドでファイルを書き込むと、その行でブレークする。

f:id:mffukui:20180812234343p:plain

 

以上で、カーネルのソースデバッグが確認できた。Happy Hacking!!!