作者:多米音乐_34176403 | 来源:互联网 | 2023-08-04 10:19
根据debug-from-the-dll-project
DLL输出是否有解决方法,不是调用应用程序正在调用的位置?
我想通过start external program
调试DLL,程序将在启动时加载DLL。也就是说,程序启动后,我直接按下F5
而不是attach to process
。
为了不污染真实目标目录,我通过构建后事件将dll和pdb复制到真实目标目录。
但是断点没有命中。
为此有任何解决方法吗?
我认为我应该用尽可能少的单词来描述这个复杂的问题。
现在我有两个名为ProjectExe
和ProjectDll
的项目。
ProjectExe
的输出目录为:D:\ProjectExe\bin\
ProjectDll
的输出目录为:D:\ProjectDll\bin\
D:\ProjectExe\bin\
中有一个名为Plugins
的目录,所以它是D:\ProjectExe\bin\Plugins\
ProjectDll
构建后事件命令行:
XCOPY D:\ProjectDll\bin\*.dll D:\ProjectExe\bin\Plugins\ /Y
XCOPY D:\ProjectDll\bin\*.pdb D:\ProjectExe\bin\Plugins\ /Y
ProjectExe
输出一个a.exe
,它将在启动后D:\ProjectExe\bin\Plugins\
加载Assembly.LoadFrom(string path)
内的所有dll。
这是ProjectDll
的设置:
好的,现在我从ProjectDll
按F5,启动a.exe
,然后触发a.exe
来调用dll中的方法,但要调用ProjectDll
中的断点没有击中 !!!
如果现在我分离,请手动重新连接到a.exe
进程,然后触发a.exe
来调用dll中的方法,即断点 hit ! / p>
所以我的问题是在这种情况下如何在不重新连接的情况下达到断点?
但是断点没有命中。为此有任何解决方法吗?
我在机器上对其进行了测试,并且可以正常工作。所以我认为它也应该对您有用,请检查:
-
如果遇到这样的事情:
请确保您的调用应用程序使用的程序集版本与当前库项目相同。
-
按F5键后,汇编代码中的断点什么都没有发生,即使是#1之类的简单警告。请检查调试器是否可以通过调用应用程序中的Main()
方法进入您的库方法。
例如:我有CallingApp和CalledDll两个项目。当我在CalledDll项目中调试时,除非引用该CalledDll.dll并在CallingApp的Main()
方法中调用它的函数,否则不会打断点。(或Main调用的方法,我们必须确保在CallingApp中运行时.exe,它将最终输入CalledDll的代码)