複数の言語によるデバッグ - PythonとC/C++

機械学習を始めとする分野では、プログラミング言語としてPythonが広く使われています。その際、SWIGやctypesなどを使ってCやC++の言語でPythonコードの機能を拡張することにより、ライブラリなど既存の資産を利用したり優れたパフォーマンスを得ることができます。しかし、そのように言語を組み合わせて書かれたアプリケーションをデバッグしようとすると、特にアプリケーションが複数のスレッドで構成されている場合には非常に困難が伴います。しばしば自動生成された大量のglueコードの中で道を見失ったり、両言語の間でデータ型の対応が取れなくなることになるでしょう。

この問題を解決するための便利な方法がTotalView/CodeDynamicsに搭載されました。これにより、C/C++で書かれた既存の高速なアルゴリズムをPythonから利用するのが容易になります。

  • 煩雑なglueコードを非表示
  • 両方の言語の関数呼び出しをシームレスに統合したスタックフレーム
  • 両方の言語の変数を同時に閲覧できるビュー

ホワイトペーパー「Mixed-language debugging with Python and C/C++」にはPythonとC/C++を組み合わせたコードを書くための様々な技術やデバッグ方法 (Eclipse使用とTotalView使用を比較) が紹介されており、言語同士のやり取りに立ちふさがる障壁を理解するのに役立つでしょう。

PythonStoppedInCWithData.png


この混合言語デバッグ機能に、TotalViewやCodeDynamicsの先進的なマルチスレッド/マルチプロセスデバッグ機能を組み合わせれば、最高のデバッグ体験を実現できます。