C++ Builderで、DLLのデバッグにPythonを利用する

PythonでDLLのテストを行うコードを書いて、もし実際にバグが見つかっても、そのバグの原因がどこにあるのかまではこの方法だと分からなくなってしまいます。それだとデバッグしたい時に不便なので、PythonでDLLをロードした時にデバッガからDLLを起動する方法についても書いておきます。手元の環境はC++ Builder6で、他のバージョンではやり方が違うかもしれませんが、大体同じ感じでできると思います。

C++ BuilderでDLLを作成すると、通常デバッガから実行することはできないのですが(DLLは実行ファイルではないので当然ですね)、ホストアプリケーションというものを指定してあげるとC++ Builderはそのホストアプリケーションを起動し、そのアプリがDLLをロード(LoadLibrary)した時点でデバッガ上でDLLが実行されるという便利な仕組みがあります。

これを利用して、ホストアプリケーションにPythonを指定してあげることで、PythonからDLLをロードした時にデバッガを使ってDLLのデバッグを行うことができます。

設定はメインメニューの「実行」→「実行時引数」で開くダイアログで行います。「ローカル」タブの「ホストアプリケーション」にPython.exeを指定して、実行するだけです。スクリプトファイルを読ませたい場合は、「実行時の引数」にスクリプトファイルのフルパスを書いてやればそのスクリプトが実行されます。

当然引数を指定しなければPythonのインタラクティブシェルが起動して、好きなようにテストコードを書き連ねていくことができます。これはかなり強力っぽく、うまく使いこなせればかなり楽になるんじゃないかなあ、と思っています。