6

CMake を使用して構築する、SWIG で生成された Python フロントエンドを含む C++ プロジェクトがあります。現在、混合された Python/C++ コードをデバッグする便利な方法を見つけようとしています。gdb を使用してエラーのスタック トレースを取得できますが、たとえば Eclipse を使用して、コードをステップ実行してブレークポイントを設定する機能など、より高度な機能が必要です。

CMake 用の Eclipse ジェネレーターを使用して、Eclipse にインポートできるプロジェクトを生成できます。これは問題なく動作し、純粋な C++ 実行可能ファイルをステップ実行することもできます。しかし、それから問題が始まります。

まず第一に、Eclipse 内から Python フロントエンドをビルドすることができません。コマンドラインから「make python」を実行するだけですが、Eclipse プロジェクトにターゲット「python」がありません。

次に、Python フロントエンドをコンパイルすると、ラップされた C++ クラスへの呼び出しを含む Python スクリプトをステップ実行する方法がわかりません。Eclipse には Python と C++ の両方のデバッグ機能がありますが、それらを組み合わせることはできますか?

4

1 に答える 1

2

たとえばEclipseを使用して、コードをステップ実行してブレークポイントを設定する機能など、いくつかのより高度な機能

それらの機能はどのように「ファンシー」ですか?Python の場合は pdb、C++ の場合は gdb で既に実行できます。

pdb を使用して Python コードを実行し (またはpdb.set_trace()興味深い時点で実行を中断するために使用)、別のターミナルで gdb をプロセスに接続することをお勧めします。pdb を使用してブレークポイントを設定し、Python コードをステップ実行します。gdb を使用して、C++ コードにブレークポイントを設定し、ステップ スルーします。pdb がネイティブ呼び出しを引き継ぐと、gdb が引き継ぎます。gdbcontinueが Python の実行の再開を許可すると、pdb が引き継ぎます。

これにより、インタープリターをトレースする必要なく、C++ と Python のブレークポイント間をジャンプできます。


免責事項: 私は主に IDE はゴミのようなブロートウェアだと思っているので、もし Eclipseこれを統合する良い方法を持っていたとしても、私はとにかくそれについて知りません。

于 2012-11-01T14:14:29.180 に答える