假设这种情况:应用程序( 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 进程。
答案 0 :(得分:3)
如果应用程序通过run-time dynamic linking使用dll,则可以将其卸载(FreeLibrary
或类似),然后重新加载(LoadLibrary
或类似)。
如果应用程序通过load-time dynamic linking使用dll,我认为你运气不好。
编辑:我误解了这个问题。由于您无法修改app.exe
,因此您必须依赖该应用程序的内置功能来进行运行时加载和卸载(如果有的话)。这完全取决于应用程序。
答案 1 :(得分:1)
Visual Studio可以编辑并继续。因此,如果您处于断点处,可以进行所需的更改,然后继续调试。 Visual Studio将在保持状态的同时编译和应用更改。
编辑:修改编辑并继续命名。