2

次のシナリオを想定します。アプリケーション ( app.exe ) が複数の .dll を使用しています。アプリで使用される .dll の 1 つ util.dll から関数bugged_function()をデバッグしています。これから bugged_function()をデバッグしているときに、コードに何か問題があり、変更を加える必要があることに気付きました。

通常実行する手順:

1.app.exe閉じる

2.関数内のコードを変更する

3. util.dll を再コンパイルする

4. app.exe を再実行します

私が欲しいもの:

手順 1 と 4 をバイパスします。そのためには、可能であれば、何らかの方法でutil.dllライブラリをアンロードして、コンパイル時にオーバーライドできるようにする必要があります。アプリケーションは何らかの方法でライブラリを再度リロードする必要があります。

編集1:

bugged_function()の呼び出し方法がわかりません。app.exeで使用されるライブラリutil.dllのソース コードにしかアクセスできないとします。

編集2:

私は Visual Studio 2010 を使用しており、デバッグ時にapp.exeプロセスにアタッチします。

4

2 に答える 2

3

アプリケーションがランタイム ダイナミック リンクを介して dll を使用している場合は、アンロード (FreeLibraryまたは類似) してから再ロード (LoadLibraryまたは類似) することができます。

アプリケーションがロード時の動的リンクを介して dll を使用している場合、運が悪いと思います。

編集:質問を少し読み違えました。を変更することはできないためapp.exe、実行時のロードとアンロードについては、そのアプリケーションの組み込み機能に依存する必要があります (ある場合)。それはアプリケーションに完全に依存します。

于 2012-08-28T20:14:27.393 に答える
1

Visual Studio は編集して続行できます。したがって、ブレークポイントにいる場合は、必要な変更を加えてデバッグを続行できます。Visual Studio は、状態を維持しながら、変更をコンパイルして適用します。

編集: 編集を修正し、命名を続けます。

于 2012-08-28T20:08:38.530 に答える