タイトルはすべてそうだと思います!! :)デバッグセッション中にリモートKGDBとローカルDDBを切り替える
リモートカーネルのデバッグ中にgdbとddbを切り替える方法があるかどうかを知りたいと思います。
私はすでにgdb(またはむしろkgdb)プロンプトを表示しています。ここから、デバッグされたマシンのローカルddbに切り替えるにはどうすればいいですか?
私のカーネル設定ファイルはすでにoptions BREAK_TO_DEBUGGER
が含まれていると私はGDBとDDBの両方が別名設定している:developer's handbook 1として options GDB options DDB
、「あなたはGDBを入力するたびに、モードは、リモートGDBとローカルDDBの間で切り替えられますあなたのホストGDBはターゲットカーネルを制御するようになりました: "
これで、gdbプロンプトに「gdb」と入力してみました。面白い:D)期待通りに、それは認識されないコマンドでした。明らかに、このコマンドはddbプロンプトに入力されているはずです。しかし、私の質問は、シリアルポート(仮想マシンだが)が別のマシンのKGDBにリモートで接続されている実行中のマシンから、どのようにddbに落とすのだろうか?リモートのGDBがリッスンしているときに、sysctl debug.kdb.enter=1
を使用してパニックを強制すると、リモートのKGDBに落ちます。しかし、リッスンしていないときは、システムが停止します。
私が欲しいのは、ローカルマシンにddbを入力することです。それを使っていくつかのデバッグを行います。リモートのKGDBにドロップして、KGDBを使って行うのが一番良いことを確認してから、完了したらローカルのDDBに戻ってください。
これを行う方法はありますか?はいの場合はお知らせください
'のsysctl debug.kdb.available'が' gdb' DDBを与える 'のsysctl debug.kdb.current'が' gdb' を与える私が(GDBがアクティブであった場合)DDBプロンプトでCTRL-Cを試してみましたコントロールをGDBに戻しますが、無駄にしません。 私は 'debug.kdb.current'で遊んでいれば私の目標を達成できますか? – HighOnMeat
わかりません。 1つのバックエンドが時間内に存在するはずです。 DDBからGDBへの移行は「gdb」コマンドです。移行はgdbを終了することです。 –
私は現在のバックエンドを 'sysctl debug.kdb.current = ddb'でddbに変更しました。それから私はパニックを引き起こし、私はddbプロンプトにいました。ここで 'gdb'と打つと、マシンはクライアントマシンのgdbバックエンドに接続されます。 gdbを終了すると、デバッグされたマシンのシェルプロンプトに戻り、ddbには戻りません。これはどうすればいいのでしょうか? – HighOnMeat