无法对 运行 DLL 进行源代码级调试

Cannot do source-level debugging on running DLL

我正在尝试在 Windows 上调试我的 DLL Class 库,但我无法让调试器在源代码中停止。

环境:Windows 10 Pro x64,Visual Studio Premium 2013 Update 5。项目是一个 .NET 4.5 Class 库。可执行文件实际上是由另一个 .exe 在调用我的 .dll 之前实例化的。 (我没有这些 .exe 中任何一个的源代码访问权限。).dll 与其调用 .exe 在同一目录中,但那不是 Class 库项目目录.我知道我的 .dll 代码正在执行,因为我在我的代码中创建了新的 windows,它们正在打开。

我在 VS2013 中尝试了 Debug->Attach to Process...,并且我连接到调用 .exe 进程,但是我在代码中设置的断点从未被击中,尽管该代码肯定被调用。我在这里错过了什么?


编辑:这不是 another question:

的副本

您的程序集可能已针对发布进行了编译,或者在没有任何调试信息的情况下进行了编译。如果你做的正确,你应该能够通过附加到进程来调试。另一件事可能是,您的代码在您可以附加到它之前执行。有时,尤其是在服务中,您将 thread.Sleep 放入代码中,这样可以为您争取一些时间来附加。

问题原来是 VS 没有正确确定要调试的代码类型。在 Attach to Process window 中,我不得不从 Automatic 切换到手动指定调试 Managed (v4. 5、v4.0)代码类型在Attach to:选项中,在附加到父.exe进程之前。然后我可以单步执行我的源代码。 (事实证明,不需要复制 .pdb 文件 - VS 仍然使用原始项目调试目录中该文件的版本。)