2

假设这种情况:一个应用程序 ( app.exe ) 正在使用多个 .dll。我正在从应用程序使用的一个 .dll 调试一个函数bugged_function()util.dll。当我从中调试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 回答