2012-03-02 13 views
1

私はVS2010でC++でビルドされたDLLを持っています。私はpythonプロジェクトから呼び出しています。PythonからVS2010でC++ DLLをデバッグ

私はdllの中にエラーがありました。私はVSツールを使ってデバッグできるようにしたいと思っていました。

関数へのデバッグ/ステッピングは、DLL内の関数コードにステップインしませんでした。

私はデバッガを接続しようとしました(そして、私にpidを与えたraw_inputでコマンドライン/ stopからPythonコードを実行し、デバッガをアタッチしました)。同じことが起こった。私は、Pythonコード内のブレークポイントを打つが、dllの中にはない。

私は最終的に、私のモニターと頭を強く打ち、dllの中で古いスタイルのトレースを使って、私のエラーを見つけました。しかし、VSの中にある既存のプロジェクトやオープンしているプロジェクトをデバッグできる方法が必要です...私はこれをもう一度実行するつもりですので、今何かを学び、将来私のモニターへの損傷を避けることを望みます。 :)

注:C++ dllファイルとpdbファイルは、両方ともpythonファイルと同じディレクトリにありますが、もちろん自動的にDebugフォルダに組み込まれており、システムパスにあるフォルダにもあります。可能なDEBUGシンボルはすべて有効です。私はPython 2.7を使用しています。

答えて

1

dllにステップインしてデバッグできるようにするには、.pdbファイルをbinディレクトリに置く必要があります。そうしないと、デバッグシンボルにアクセスできません。この.pdbは、Visual Studioで.dllファイルを読み取り、そのメソッド呼び出しにステップインします。

+0

binディレクトリはどこですか?パス\ foldername \ output \ Win32 \ Debug \にcdll.LoadLibraryのための私のdllへのパスを手動で指定しなければなりませんでした。そこに.pdbファイルも表示されます。私はbinディレクトリを持っていません - pythonの解決策は、追加のディレクトリを作成しません。 – Thalia

+0

もしpdbファイルがすでに存在するならば、プロジェクトをビルドするときにそれらのシンボルを読み込むべきです。 exeを実行すると、このプロセスにデバッガをアタッチすることができます。コードのその部分にヒットすると、ファイルにステップインする必要があります(最初のメソッドにブレークポイントを設定してdllを使用します)。 – jzworkman

+0

それが私がとても混乱している理由です。ところで、私はPythonプログラム(exeではなく)からdllを呼び出しました – Thalia

関連する問題