2011-03-08 8 views
1

私はguiをdelphiで書いています。 私はcomアセンブリをcomから作りました。そして、私はそれをdelphiから呼び出しています。 私は.netアセンブリにステップインできません。 dllのコンパイル時にdelphi_project.exeを実行しましたが、delphi_project.exeが動作し始めました。 と.net dllのブレークポイントに到達できなくなりました。どうすれば修正できますか?デバッグ.netアセンブリのアンマネージコード

編集:

+0

あなたはどのようなデバッガを使用していますか? – JaredPar

+0

vs 2010最終的な – eba

+0

ご利用いただいているツールを教えてください。デルファイ。ネット?ネイティブDelphi?デルファイのプリズム? Visual Studio?そして、どのデバッガですか? –

答えて

1

ULT VS2010は、それが原因でドットネットの仮想マシンの設計と、ことはできません。

ドットネットコードは、マシン上でネイティブではなく、仮想環境で実行されて管理されます。

Dotネットコードがコンパイルされていても(解釈することはできますが)、ネイティブのWindows実行ファイルに直接コンパイルされません。CILにコンパイルされ、CLRによってx86オペレーションコードに変換または変換されます。仮想環境内で実行されます。

これはセキュリティについて非常に信頼性が高く、RTTIやガベージコレクションのような高レベルのトリックを許可しますが、他のどのような処理でもありません。

実際のDelphi実行ファイル(Windowsの実行ファイル)をDotNetコードに渡すことはできません。 CまたはC++コード(すべてのデバッグ情報があり、それをBorland C++ビルダーでコンパイルした場合)で行うことはできますが、DotNetコードで行うことはできません。

DelphiのASMビュー(ショートカットはAlt-F2)で段階的にデバッグを試みることはできますが、mscoree.dllライブラリでは多くの時間を費やすことになり、DotNetのどの行かわからなくなりますあなたが実行しているプログラム。私はあなたが私のようになるだろうと思う:asmのコードで沈んで...私たちは人間であり、x86ではない!だからあなたのアプリケーションをデバッグする

  • はサイド(デルファイ+過去ログ)
  • の両方へのロギングを追加するテストをしたいDotNetのコードを呼び出すのに十分なだけ大きい、純粋な過去ログのスケルトンアプリケーションを作成します。このあなたのDotNetのコードをデバッグすることができます
  • でも良く、自動化されたテストを書く:あなたの過去ログコードはいくつかの回帰テストで、過去ログ側からテストする必要があります -
0123デルファイから呼び出された場合、それが統合し、期待通りに動作します

最後のトリック:64ビットOSで問題なく実行するDotNetコードを作成したい場合は、アセンブリをto the right targetに設定しないでください。Delphiアプリケーションから実行すると、Delphiの実行可能ファイルはWow64内で実行されるためです。まだ32ビット。

EDIT:多分SOLUTION

いくつかの睡眠の後、アイデアは私のところに来た:デルファイIDEで、デバッグにプロセスを添付することができます。おそらく、Visual Studio IDEでも同じことが可能です。

これは実現可能です。IDEのいくつかのメニューから、実行中のプロセスにVisual Studioデバッガを接続することができます。

のVisual Studioデバッガは は、Visual Studioの外部で実行されているプロセスにアタッチする 能力を持っています。あなたは 次 を行うには、この添付機能を使用することができます。

  • デバッグのVisual Studioで作成されていないアプリケーションを。
  • 同時に複数のプロセスをデバッグします。 複数のプロセスをデバッグするには、 ソリューション内で 複数のプロジェクトを開始します。
  • リモートコンピュータ上で実行中のプロセスをデバッグします。
  • サービスまたは インターネットインフォメーションサービスで実行されているサービスのように、Visual Studioの を簡単に起動できない別のプロセスで実行されるDLLをデバッグします。
  • Visual Studio以外で を実行しているときにプロセスがクラッシュしたときに、自動的にデバッガを起動します。これは Just-In-Timeデバッグです。

出典:http://msdn.microsoft.com/en-us/library/3s68z0b3.aspx

+0

OPに言及する1つのツールはVSなので、これが役立つかどうかはわかりません。私の推測では、OPは.net DLLをVSでデバッグしようとしており、これが失敗しているということです。しかし、OPがいくつかの詳細を提供することを決定するまでは、すべての推測です。 –

+0

私が理解したところには、COMとしてエクスポートされたDot Netライブラリでコード化されたロジックを呼び出すDelphi GUIアプリケーションがいくつかあります。彼はDot Netライブラリをデバッグしたいと思っていますが、Delphi IDEからはできません。そこで彼はVS IDEからデバッグしたかったのです。私は可能な解決策で私の答えを編集しました。 –

関連する問題