2011-11-12 11 views
0

なぜは常にkernel/kgdb.c:1749から始まります。Linuxのカーネルの途中で "kgdb:remote ddbからの接続を待っています"という行です。kgdbはinit.cから遠く離れていますstart_kernel()

最初からやりたいです。

私の環境は次のとおりです。

  • PC ubuntu10.10
  • GDB-カーネルVirtualMachはからのヒントに続いてQEMU

あるbusyboxの

  • によって作ら2.6.34.1
  • のfilesysウェブ検索、私は自分のlinuxを作った。私はスムーズにそれを使用することができますが、私は、リモートGDBそれにしようとすると、カーネルは常にから開始:

    カーネル/ kgdb.c:1749「KGDB:リモートGDBからの接続を待っている」

    ました私が会いたい機能start_kernelからはるかに遠すぎます。

    私は、次を使用しています:

     
    qemu -kernel /usr/src/work/bzImage -append "root=/dev/sda kgdboc=ttyS0,115200 kgdbwait" 
        -boot c -hda /usr/src/work/busybox.img -k en-us -serial tcp::4321,server 
    
    gdb /usr/src/work/vmlinux (gdb) target remote localhost:4321 
    

    その後、私は-Sを追加するので、それは最初から開始することができます。しかし、私はgdbそれはまだ何かが間違っているとき。

    コマンドnextを入力すると、次の行に移動せず他の場所に移動します。たとえば、nextの後にブレークポイントをinit.c startkernel()に設定します。他のファイルにあります。

  • +1

    http://blog.scottt.tw/2010/01/kgdb-tutorial.html –

    +0

    thx ..私は試してみるつもりです – yueyue

    答えて

    0

    "kgdb:remote ddbからの接続を待っています"が十分早くない場合、あなたはkgdb以外のものを試す必要があります。これについて考える:kgdbはカーネルが提供するサービスです。カーネルはkgdbサービスを提供するのに十分な初期化を実行しなければならないので、 "最初から"カーネルをデバッグすることはできません。

    幸いにも、あなたのための別のオプションがあります。 this sourceによると、フラグ-s -Sでqemuを起動すると、qemuはシステムを起動し、デバッガをlocalhost:1234に接続してからカーネルをロードするまで待ちます。早いですか?

    +0

    thxたくさん...私は "-S"を追加しましたが、何かweired happened。私はinit.c startkernel()でブレークポイントを設定しました。次に、別のファイルにあります。 – yueyue

    関連する問題