20056


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が自動で読み込まれていないようなのですが  
これを読み込ませる方法をお教えください。


CC BY-SA 3.0
2015-12-14T05:55:04.327
19957
2015-12-16T07:44:18.703
2015-12-16T07:44:18.703
7844
7844
question
linux eclipse
eclipseで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とすることで解決できました。


CC BY-SA 3.0
2015-12-16T06:29:19.263
20056
2015-12-16T06:29:19.263
7844
19957
answer