質問: qemuをつかってlinuxカーネルデバッグをします linuxカーネルは4.2.6でconfigにGDB_SCRIPT=yとしています。 GDB_SCRIPT=yとしていますので、vmlinuxと同じディレクトリにvmlinux-gdb.pyへのリンクができます。 これにより、gdb起動時にvmlinux-gdb.pyが自動的に読み込まれ lx-dmesg, lx-lsmod, lx-symbolなどのコマンドが使えるようになります。 linuxの起動はqemuを以下のコマンドで起動しています。 > > qemu-system-x86_64 -hda Debian-jessie_amd64.qcow -m 4G -net nic,model=e1000 -net tap,ifname=tap-qemu0,script=no -s > > > -sオプションを付けていますので、target remote :1234でgdbに接続できます。 gdbの起動は以下のようにします。 > > gdb vmlinux > > target remote :1234 > > > ここでlx-dmesgなどのコマンドが使用出来ています。 問題はここからです これをeclipse CDTのGDB Hardware Debuggingを使用してeclipse上で実行するときです。 breakpointやcontinueなどのデバッグ機能はうまく動きます。 しかしながら、eclipseのgdbコンソールからlx-dmesgと入力しても Undefined commandと言われて使うことができません vmlinux-gdb.pyが自動で読み込まれていないようなのですが これを読み込ませる方法をお教えください。
回答: 自己解決です。 EclipseのGDB Heardware DebuggingはGDBの起動の際に-nxオプションをつけて ~/.gdbinitを読み込みません。 ~/.gdbinitにはpythonの自動ロードを許可するために > > set auto-load safe-path / > > > を含めていました。 しかし~/.gdbinitを読み込まないためset auto-load safe-path /が効かず vmlinux-gdb.pyが自動で読み込まれていませんでした。 読み込ませるためにGDBの起動をgdb -x ~/.gdbinitとすることで解決できました。