日記/2009-05-02/kgdb を使ってみた - テキスト版
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
開始行:
* kgdb を使ってみた - テキスト版 [#q2dd6d2d]
#nicovideo(sm6890424,right)
先日,ニコ動にこんな動画を投稿してみたんだけど,「文字が...
#clear
** kgdb とは [#ece73bfd]
#ref(1.png,right,around,50%)
ターゲットプログラム内に''スタブ''と呼ばれる gdb の手先を...
この「ターゲットプログラム」が Linux カーネルの場合,「ス...
#clear
#ref(HDL-GXR.jpg,right,around,50%)
kgdb は x86 ターゲットでも利用できますが,それではつまら...
#clear
** menuconfig [#w5803b12]
まずはビルドするカーネルの設定.
#ref(menuconfig-1.png,right,around,70%)
トップメニューから「Kernnel hacking」メニューに入って
#clear
#ref(menuconfig-2.png,right,around,70%)
「Compile the kernel with debug info」を有効にします.
これが無くても kgdb 自体は動作するんだけど,vmlinux ファ...
#clear
#ref(menuconfig-3.png,right,around,70%)
もちろん KGDB オプションも有効にします.
#clear
#ref(menuconfig-4.png,right,around,70%)
KGDB メニューに入り,「KGDB: use kgdb over the serial con...
#clear
** カーネルコマンドライン [#q5725f81]
#ref(u-boot.png,right,around,70%)
kgdb を利用するには,カーネルコマンドラインに
>kgdboc=ttyS0,115200
という設定を追加して起動します.
x86 マシンの場合は grub や lilo でこの操作をやりますが,H...
あと,
>console=ttyS0,115200
というパラメータも追加し,シリアルにコンソールを設定して...
でないと,リモートマシンと通信をすることができません.
#clear
** kgdb への切り替え [#b40ae0a3]
#ref(sysrq.png,right,around,70%)
シリアルコンソールを gdb スタブへ明け渡すには
> ブレーク信号 g
を送ってやります.
ブレーク信号(Ctrl+C とは別物)の送り方は,使っているター...
ここで使っている minicom の場合は
> Ctrl+a f
でブレーク信号が送出されます.
この後に続けて「g」を入力すると,シリアルコンソールが gdb...
** gdb の起動 [#ce85f3d9]
#ref(gdb-start.png,right,around,70%)
ターミナルソフトを終了させて gdb を起動します.
> arm-linux-gnueabi-gdb vmlinux -b 115200
gdb のコマンドラインには uImage や bzImage ではなくて,デ...
あと,-b 115200 はシリアルのビットレートです.
で,gdb プロンプトで
> target remote /dev/ttyS0
と入力すると kgdb と接続されます.
#clear
#ref(gdb-bt.png,right,around,70%)
あとは,アプリケーションプログラムのデバッグのときと同様...
#clear
#ref(gdb-bp.png,right,around,70%)
ブレークポイントを設定したり
#clear
#ref(gdb-step.png,right,around,70%)
ステップ実行したり,変数を参照したりすることもできます.
#clear
** まとめ [#ac38ed8a]
ざっくりと kgdb を起動するまでを説明しました.
デバッガとは本来,デバッグするための道具です.
が,不具合が無い場合でも,単にプログラムの動作を追ってみ...
というわけで,kgdb は「Linux のカーネルのソースコードは巨...
** 2009/12/17 追記 [#h2361432]
- vmlinux の説明がミスリーディングぽかったらしいので,gdb...
- カーネルコンフィグオプションの説明が間違ってたので修正
[http://www.oidon.net/ koyo_take] さん,ご指摘ありがとう...
終了行:
* kgdb を使ってみた - テキスト版 [#q2dd6d2d]
#nicovideo(sm6890424,right)
先日,ニコ動にこんな動画を投稿してみたんだけど,「文字が...
#clear
** kgdb とは [#ece73bfd]
#ref(1.png,right,around,50%)
ターゲットプログラム内に''スタブ''と呼ばれる gdb の手先を...
この「ターゲットプログラム」が Linux カーネルの場合,「ス...
#clear
#ref(HDL-GXR.jpg,right,around,50%)
kgdb は x86 ターゲットでも利用できますが,それではつまら...
#clear
** menuconfig [#w5803b12]
まずはビルドするカーネルの設定.
#ref(menuconfig-1.png,right,around,70%)
トップメニューから「Kernnel hacking」メニューに入って
#clear
#ref(menuconfig-2.png,right,around,70%)
「Compile the kernel with debug info」を有効にします.
これが無くても kgdb 自体は動作するんだけど,vmlinux ファ...
#clear
#ref(menuconfig-3.png,right,around,70%)
もちろん KGDB オプションも有効にします.
#clear
#ref(menuconfig-4.png,right,around,70%)
KGDB メニューに入り,「KGDB: use kgdb over the serial con...
#clear
** カーネルコマンドライン [#q5725f81]
#ref(u-boot.png,right,around,70%)
kgdb を利用するには,カーネルコマンドラインに
>kgdboc=ttyS0,115200
という設定を追加して起動します.
x86 マシンの場合は grub や lilo でこの操作をやりますが,H...
あと,
>console=ttyS0,115200
というパラメータも追加し,シリアルにコンソールを設定して...
でないと,リモートマシンと通信をすることができません.
#clear
** kgdb への切り替え [#b40ae0a3]
#ref(sysrq.png,right,around,70%)
シリアルコンソールを gdb スタブへ明け渡すには
> ブレーク信号 g
を送ってやります.
ブレーク信号(Ctrl+C とは別物)の送り方は,使っているター...
ここで使っている minicom の場合は
> Ctrl+a f
でブレーク信号が送出されます.
この後に続けて「g」を入力すると,シリアルコンソールが gdb...
** gdb の起動 [#ce85f3d9]
#ref(gdb-start.png,right,around,70%)
ターミナルソフトを終了させて gdb を起動します.
> arm-linux-gnueabi-gdb vmlinux -b 115200
gdb のコマンドラインには uImage や bzImage ではなくて,デ...
あと,-b 115200 はシリアルのビットレートです.
で,gdb プロンプトで
> target remote /dev/ttyS0
と入力すると kgdb と接続されます.
#clear
#ref(gdb-bt.png,right,around,70%)
あとは,アプリケーションプログラムのデバッグのときと同様...
#clear
#ref(gdb-bp.png,right,around,70%)
ブレークポイントを設定したり
#clear
#ref(gdb-step.png,right,around,70%)
ステップ実行したり,変数を参照したりすることもできます.
#clear
** まとめ [#ac38ed8a]
ざっくりと kgdb を起動するまでを説明しました.
デバッガとは本来,デバッグするための道具です.
が,不具合が無い場合でも,単にプログラムの動作を追ってみ...
というわけで,kgdb は「Linux のカーネルのソースコードは巨...
** 2009/12/17 追記 [#h2361432]
- vmlinux の説明がミスリーディングぽかったらしいので,gdb...
- カーネルコンフィグオプションの説明が間違ってたので修正
[http://www.oidon.net/ koyo_take] さん,ご指摘ありがとう...
ページ名:
-->