問題タブ [kgdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - シリアル ポートを使用した Linux カーネル モジュールのデバッグ
簡単なカーネルデバッグをセットアップしようとしています.VM(ESXi)に3.2.6カーネルがあり、シリアルポートを宣言しました(シリアルに接続できます)
デバッガ:
デバッグ対象:
gdb のセットアップ方法に関するこのチュートリアルに従いましたが、デバッグを開始すると返信が返ってきたようです (シリアル ポートは問題ないようです)。
2k10 の lkml で 2.6.35 カーネルで同様の問題が発生しているスレッドに遭遇しましたが、パッチがコミットされており (メインストリームに入ったと思われます)、3.2.6 をデバッグしようとしています。
これは私が gdb から得ているものです:
vm からの出力は次のとおりです。
誰かがそれを解決する方法を教えてもらえますか?
(モッズが私のメッセージを編集し、すべての画像を実際の画像に変換し、リンクを実際のリンクに変換できる場合、システムはそれを許可しませんでした。投稿する前に投稿を4〜5回編集する必要があります:/ )
c - kgdb セットアップで一部の関数にブレークポイントを設定できない
2 つの仮想マシンを使用して kgdb をセットアップしましたが、どちらも CentOs 6.4 を使用しています (実際には kgdb ホストはターゲットのクローンです)。リモート ターゲットに正常に接続し、デバッグを開始できます。RAID ドライバ、具体的には raid456.ko をデバッグしたいです。私の問題は、gdb で add-symbol-file コマンドを使用してこの raid456.ko のシンボルをロードした後、いくつかの関数にブレークポイントを設定できることですが、いくつかの関数にブレークポイントを設定できません。たとえば、ops_run_biofill 関数にはブレークポイントを設定できますが、ops_run_biorain 関数には設定できません。どちらも静的関数であり、raid5.c ファイルの一部です。ops_run_biorain にブレークポイントを設定しようとすると、次のように表示されます。
(gdb) b ops_run_biorain
関数「ops_run_biorain」が定義されていません。今後の共有ライブラリのロード時にブレークポイントを保留にしますか? (y または [n])
デバッグできる機能がほとんどないのはなぜですか?
[編集]--------------------- 問題をさらに調査したところ、nm ユーティリティを使用して、特定のシンボル部分の名前と仮想アドレスを見つけることができることがわかりました。オブジェクトファイル。raid456.ko で nm を試してみたところ、nm コマンドの出力に ops_run_biofill 関数が表示されますが、ops_run_biorain は出力されません。これは ops_run_biorain が raid456.ko にないということですか? はいの場合、なぜそれが raid456.ko の一部ではないのですか? ops_run_biorain はマクロ チェックを受けていません。
linux - GDB + KGDB 経由でローカルマシンからリモートでデバッグされた Linux カーネルを壊す方法は?
GDB + KGDB + 2 つの仮想マシン + シリアル ポートを介して Linux カーネルをデバッグしています。
GDB を使用して通常のプログラムをデバッグする場合、Ctrl+C を押すだけでプログラムの実行を中断できます。
ただし、GDB をリモート KGDB スタブに接続すると、リモート マシンで次のコマンドを使用する以外は、リモート マシンを壊すことはできません。
echo g > /proc/sysrq-trigger
リモートでデバッグされた Linux カーネルをローカルマシンから切り離す方法は?
gdb - 認証を使用してターミナル サーバー経由で gdb クライアントに接続する
リモートデバッグをしようとしています。私のGDBサーバーは期待どおりに動作します(私の場合、カーネル側のKGDBです)。GDBクライアントが接続できるように、KGDBはうまくハングアップします。
ユーザー名とパスワードが必要な実際のシナリオでは、デバイスがターミナルサーバー経由で接続されているため、ターミナルサーバーとポート番号を使用してGDBクライアントを接続する必要があります。
したがって、target remote terminal-server:port を実行するだけでは、ユーザー名とパスワードを提供する方法がないため、接続に役立ちません。
デバイスをシリアル ポートに直接接続し、ターゲット リモート /dev/ttyS0 で試してみると、期待どおりに動作します。
しかし、ターミナル サーバー経由で接続されているデバイスをさらにデバッグしたいと考えています。この問題を解決するのを手伝ってもらえますか? コマンド target remote | も試します。expect_script (ユーザー名とパスワードでログインしようとします)、成功できませんでした。これを行う正しい方法を提案してください。
debugging - kgdboc を使用した KGDB エラー コード '22'
現在、PowerPC 500v2 プロセッサを使用してボードをデバッグしようとしています。ボードの準備ができている間に gdb を使用してボードに接続しようとすると、ステータスが表示されます
リモートデバッグ1セットあり:
表示とデバッグのために、単一のシリアル ポートで古いカーネル (2.6.27) を実行しています。私は主に echo ttySX > /sys/module/kgdboc/parmeters/kgdboc と echo g > /proc/sysrq-trigger をセットアップに使用していますが、起動時にカーネル引数も試しましたが、違いはないようです。何らかの理由で gdb を終了すると、終了データがボードに正常に送信されているように見えます (ボードは一時停止を停止します) が、他のコマンドはどれも機能していないようです。
gdb - GDB の solib-absolute-prefix と solib-search-path の比較
両方の説明を読みましたが、違いはまだわかりません。違いを理解するのを手伝ってくれる人はいますか?
.
ありがとう。