8

Delphi 7 (iow、ネイティブ win32、.net ではない) アプリケーションから COM 経由で呼び出される C# アセンブリを開発しています。

これまでのところ、うまくいくようです。TLB ファイルをエクスポートし、それを Delphi プロジェクトにインポートしました。これで、C# オブジェクトを作成し、その関数を呼び出すことができます。

これは素晴らしいことですが、すぐにVisual Studio を使用して、実行中の C# コードをデバッグしたいと思うようになりますブレークポイントの設定、コードのステップ実行、その他すべて。

COM オブジェクトが作成された後に Delphi コードを壊そうとしましたが、VS がアタッチするプロセスを探しましたが、見つかりません。

これを行うためにVS2008を設定する方法はありますか? f5 を押して VS に Delphi 実行可能ファイルを起動させ、C# コードが呼び出されるのを待ってから、自分自身をそれにアタッチできるようにしたいのですが、手動でプロセスにアタッチすることもできると思います。

MessageBox.Show などで間に合わせる必要があるとは言わないでください。

4

3 に答える 3

12

VS2008 プロジェクトのプロパティ ページの [デバッグ] タブには、別の開始アクションを設定するオプションがあります。

これは、F5 を押したときに外部プログラム (Delphi アプリなど) を実行するために使用できます。

于 2008-09-24T12:47:12.237 に答える
10

デバッグするメソッドに次を配置します。

#if DEBUG
    if (!System.Diagnostics.Debugger.IsAttached)
        Debugger.Launch();
#endif

デバッグする場合は、デバッグ バージョンをビルドし、それをアプリケーションで使用します。このコードを実行すると、デバッガーをアタッチするかどうかを尋ねるダイアログがポップアップ表示されます。

于 2008-09-24T12:40:42.457 に答える
1

ネイティブ アプリケーションにアタッチするだけで、ブレークポイント、ビュー スタック、ウォッチなどを通常どおり表示できます。COM オブジェクトの作成後にアタッチする必要があります。

オブジェクトの作成時に Afx MsgBox を配置して、アプリケーションのフローを停止し、デバッガーをアタッチします。

于 2008-09-24T12:44:06.737 に答える