C# 无法对正在运行的DLL执行源代码级调试

C# 无法对正在运行的DLL执行源代码级调试,c#,.net,debugging,dll,visual-studio-debugging,C#,.net,Debugging,Dll,Visual Studio Debugging,我正在尝试在Windows上调试DLL类库,但无法在源代码中停止调试程序 环境:Windows 10 Pro x64,Visual Studio Premium 2013更新5。该项目是一个.NET4.5类库。在调用my.dll之前,可执行文件实际上是由另一个.exe实例化的。(我对这两个.exes都没有源代码访问权限。).dll与其调用的.exe位于同一目录中,但这不是类库项目目录。我知道我的.dll代码正在执行,因为我在代码中创建的新窗口正在打开 我在VS2013中尝试了调试->附加到进程…

我正在尝试在Windows上调试DLL类库,但无法在源代码中停止调试程序

环境:Windows 10 Pro x64,Visual Studio Premium 2013更新5。该项目是一个.NET4.5类库。在调用my
.dll
之前,可执行文件实际上是由另一个
.exe
实例化的。(我对这两个
.exe
s都没有源代码访问权限。).dll与其调用的
.exe
位于同一目录中,但这不是类库项目目录。我知道我的
.dll
代码正在执行,因为我在代码中创建的新窗口正在打开

我在VS2013中尝试了调试->附加到进程…,我连接到了调用的.exe进程,但我在代码中设置的断点从未命中,尽管该代码肯定被调用。我错过了什么


编辑:这不是以下内容的副本:

  • 没有收到任何错误消息
  • 不间断地工作
  • 确认装配已加载并执行

您的程序集可能编译为发行版,或者编译时没有任何调试信息。若你们做的正确,你们应该能够通过连接到进程进行调试。另一个可能的情况是,代码在附加到它之前执行。有时,特别是在服务中,您将
线程.Sleep
放入代码中,因此这为您赢得了一些附加的时间。

您的程序集可能会编译为发行版,或者编译时没有任何调试信息。若你们做的正确,你们应该能够通过连接到进程进行调试。另一个可能的情况是,代码在附加到它之前执行。有时,特别是在服务中,您将
线程.Sleep
放入代码中,因此这为您赢得了一些附加时间。

问题在于VS没有正确地确定要调试的代码类型。在附加到进程窗口中,我必须从自动切换到附加到父
.exe
进程之前,在附加到:选项中手动指定调试托管(v4.5,v4.0)代码类型。然后我可以通过我的来源。(事实证明,不需要复制
.pdb
文件-VS仍在原始项目调试目录中使用该文件的版本。)

问题是VS没有正确确定要调试的代码类型。在附加到进程窗口中,我必须从自动切换到附加到父
.exe
进程之前,在附加到:选项中手动指定调试托管(v4.5,v4.0)代码类型。然后我可以通过我的来源。(事实证明,不需要复制
.pdb
文件-VS仍使用原始项目调试目录中该文件的版本。)

我的项目使用标准VS调试配置。在代码执行之前,我正在连接到正在运行的进程。我的项目正在使用标准VS调试配置。在我的代码执行之前,我正在连接到正在运行的进程。您没有提供有关dll的编译信息,您遇到了问题。您用于构建它的配置以及该配置上的设置是什么configuration@T.S.当我回到办公室后,我会在周一给你回复细节,但这是一个普通的调试配置。可能是@Conrad的副本,你能告诉我们如何从.exe调试dll的详细步骤吗?在“输出”窗口或“调试模块”窗口中是否收到任何消息?您有dll的pdb文件吗?@qxg它不是重复的。您没有提供有关dll的编译信息,您遇到了问题。您用于构建它的配置以及该配置上的设置是什么configuration@T.S.当我回到办公室后,我会在周一给你回复细节,但这是一个普通的调试配置。可能是@Conrad的副本,你能告诉我们如何从.exe调试dll的详细步骤吗?在“输出”窗口或“调试模块”窗口中是否收到任何消息?你有dll的pdb文件吗?@qxg它不是重复的。