Linuxカーネルデバッグ その8(ソースデバッグ)
CCSでLinuxのソースデバッグを行う。ここでは、例としてファイル書き込み時に関数がブレークすることを確認する。
手順
1. XDSv100、BeagleBoneBlack、ホストPCを接続する。
2. ターミナルからscreenコマンドで接続した状態でBeagleBoneBlackの電源を投入する。U-Bootが起動するので、何かキーを押して、コマンド入力待ち状態にする。
3. CCSを起動する。workspaceは以前使用したものを選ぶ。ここではデフォルトの「workspace_v8」を選択する。
4. 「Target Configurations」ウィンドウからUser Defined内のBeagleBoneBlack.ccxmlを右クリックし、「Launch Selected Configuration」を選ぶ。
5.画面がDebug画面に切り替わる。この状態ではまだ接続していない。
6.「Texas Instruments XDS 100v3 USB Debug Probe_0/CortxA8」を選択し、右クリックで「Connect Target」を選ぶ。
→GELが実行され、CortexA8がSuspended状態になる。
7.実行ボタン(緑の矢印)を押下すると、CPUが走りだし、Linuxが起動する。
linux起動後、ログインしておく。
8. シンボルファイルのロードを行う。CCSのメニューで「Run」→「Load」→「Load Symbols」を選択し、vmlinuxファイルを指定する。指定するファイルはkernel_src/kernel/kernel/vmlinux。
9. CCSのメニューから「File」→「Open File」を選択し、ブレークを貼るファイルを開く。ここでは、kernel_src/kernel/kernel/fs/ext4/file.cを開く。
10. ブレークする関数を探し、ブレークポイントを貼る。右クリックし、「Breakpoint」→「Hardware Breakpoint」を選択する。
→ブレークポイントが張られる。
11.echoコマンドでファイルを書き込むと、その行でブレークする。
以上で、カーネルのソースデバッグが確認できた。Happy Hacking!!!