日本語版
最新ニュース
科学&テクノロジー

1024BEES/DANG:GDBで波形をデバッグします

JPDBは、プレシリコンCPUをデバッグするためのGDBインスピレーションを受けたデバッガーです。コードをステップスルーしたり、ブレークポイントを追加したり、波形値を確認したりできます。かなりきちんと! 始めるために 波形 波形の信号を変換するPythonマッピングファイル 波形で実行されているELFファイル jpdb test_data/ibex/sim.fst --mapping-path test_data/ibex/signal_get.py あなたのシステムPythonは3.10以下でなければなりません。そうでなければ、JPDBはあなたにbarえ、動作しない可能性があります サーファー機能のいずれかを使用する場合は、サーファーをインストールして$ PATHに設置する必要があります。サーファーの統合には、WCPサポートが必要です JPDBは貨物を介して設置できます cargo install --git https://github.com/1024bees/dang jpdb Githubのリリースページ JPDBのマッピングファイルは、JPDBの内部GDBサーバースタブで信号を理解可能にする変換レイヤーです。 マッピングファイルには、名前付き関数が含まれている必要があります get_gdb_signals それはPythonを返します dict。返されたPython辞書には、次のキーが含まれている必要があります。 PC:現在の退職したPCの信号 X0-X31:各アーキテクチャの汎用登録の信号 マッピングファイルの例を以下に示します pc = wave.get_signal_from_path( "TOP.ibex_simple_system.u_top.u_ibex_top.u_ibex_core.wb_stage_i.pc_wb_o" ) gprs = { f"x{i}": wave.get_signal_from_path( f"TOP.ibex_simple_system.u_top.u_ibex_top.gen_regfile_ff.register_file_i.rf_reg.[{i}]"…

1024BEES/DANG:GDBで波形をデバッグします

1759271428
2025-09-30 21:33:00

JPDBは、プレシリコンCPUをデバッグするためのGDBインスピレーションを受けたデバッガーです。コードをステップスルーしたり、ブレークポイントを追加したり、波形値を確認したりできます。かなりきちんと!

始めるために

  • 波形
  • 波形の信号を変換するPythonマッピングファイル
  • 波形で実行されているELFファイル
jpdb test_data/ibex/sim.fst --mapping-path test_data/ibex/signal_get.py

あなたのシステムPythonは3.10以下でなければなりません。そうでなければ、JPDBはあなたにbarえ、動作しない可能性があります

サーファー機能のいずれかを使用する場合は、サーファーをインストールして$ PATHに設置する必要があります。サーファーの統合には、WCPサポートが必要です

JPDBは貨物を介して設置できます

cargo install --git https://github.com/1024bees/dang jpdb

Githubのリリースページ

JPDBのマッピングファイルは、JPDBの内部GDBサーバースタブで信号を理解可能にする変換レイヤーです。

マッピングファイルには、名前付き関数が含まれている必要があります get_gdb_signals それはPythonを返します dict。返されたPython辞書には、次のキーが含まれている必要があります。

  • PC:現在の退職したPCの信号
  • X0-X31:各アーキテクチャの汎用登録の信号

マッピングファイルの例を以下に示します

    pc = wave.get_signal_from_path(
        "TOP.ibex_simple_system.u_top.u_ibex_top.u_ibex_core.wb_stage_i.pc_wb_o"
    )
    gprs = {
        f"x{i}": wave.get_signal_from_path(
            f"TOP.ibex_simple_system.u_top.u_ibex_top.gen_regfile_ff.register_file_i.rf_reg.[{i}]"
        ).sliced(0, 31)
        for i in range(32)
    }

    rv = {"pc": pc, **gprs}
    return rv

マッピングファイルが適切に形成されていることを確認するために、実行できます

jpdb test_data/ibex/sim.fst --mapping-path test_data/ibex/signal_get.py --verify-only

ただし、これはJPDBを正常に起動すると発生します

  • JPDBはSuperScalar CPUをサポートしていますか?

まだではありませんが、スーパースカラーCPUの波のダンプを私に与えたら、私はサポートを追加し、親切にありがとう

  • どの命令セットがサポートされていますか?

RV32Gだけですが、別のISAを使用する別のCPUのダンプがある場合は、サポートを追加し、親切に感謝します

  • JPDBを使用するには、ELFファイルを提供する必要がありますか?

この時点で、ええ、私たちはエルフからたくさんのジューシーな情報を得ています

  • nは常に関数呼び出しにステップインします。

ええ、私はそれを修正する必要があります、最終的にはそれに到達するか、あなたがプロジェクトファイルが好きなら問題と罪悪感は私を加速します

  • JPDBはサーファーとどのように統合されますか?

波の制御プロトコル(WCP)を使用しています。しかし、サーファーは少しバギーである可能性があると思います。コマンドの一部(たとえば、ビューポートの調整)は失敗を引き起こしますが、他のコマンドは障害を引き起こしません。したがって、今のところ統合はかなり大まかですが、コアロジックはそこにあります

JPDBは本当にいくつかのものが接着されています

  • Dang:プレシリコンCPUのGDBサーバー
  • Shucks:このプロジェクトのために特別に書かれたGDBクライアントは、波と対話するためのいくつかの追加フックを備えています wellen
  • TUI、Shucksから取られた状態を示しています

私がこれを始めたとき、ポイントはJust Dang(GDB Server Stub)から始めて、人々に独自のGDBクライアントを連れてくることでした。しかし、2つのことがすぐに明らかになりました:

  1. 独自のGDBクライアントを取得するのは迷惑です。私はMacで開発しており、GDBをゼロから構築することはMacに些細なことではありません。人々が実際に使用するためにそれを広く配布します。また、facto GDBクライアントのRISCVサポートは疑わしいものでした
  2. TUIを制御することは、波形固有の日付とより積極的に統合するのに役立ちます

これらの責任者は自分で使用できます。彼らはすべきです just_work うまくいけば

wellen 図書館はこれを簡単にしました、ケビン・レウファーに感謝します

また、トム・ヴェルビュールはしばらく前に似たようなことをしました、叫ぶ

#1024BEESDANGGDBで波形をデバッグします

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。