如何在Visual Studio中的引用代码中设置断点?

Dab*_*rnl 51 .net debugging breakpoints visual-studio

我的主要解决方案是使用我自己编写的实用程序类库中的代码,但它是另一个解决方案的一部分.如何在引用的DLL文件中设置断点?

SLa*_*aks 53

单击Debug,New Breakpoint,Break at Function,然后输入函数的全名.

  • 现在我很清楚,但请记住包括除括号之外的函数的完整命名空间. (8认同)
  • 我无法在VS2012下工作,因为它说它无法验证功能.它似乎能够在解决方案中找到函数,但在引用的库中却找不到. (2认同)
  • 忽略那个警告,无论如何都应该有效 (2认同)

Oli*_*bes 24

在Visual Studio中,使用菜单手动打开包含所需方法的引用dll的源文件

文件>打开>文件...

然后通过单击代码编辑器中的左边框来设置断点.这使您可以在任何代码行中断,而不仅仅是函数调用.Visual Studio以一种禁用状态显示断点,因为它认为代码无法访问.只是忽略它; 一旦代码运行,断点将变为活动状态.

注意:您必须引用程序集的Debug版本才能使其正常工作.


Jos*_*osh 17

您可以执行以下操作之一:

  1. 将DLL项目添加到包含可执行文件的解决方案中.然后您可以正常设置断点.
  2. 您只需打开DLL项目并使用Debug - > Attach to Process连接到正在运行的EXE

  • (2)我觉得很简单 - 只需并排运行两个Studio实例."主要"上的Ctrl-F5与附加的调试器连接,然后使用正在编辑库项目的工作室实例附加到进程. (14认同)
  • Frep D-Oronge,您应该补充一点 - 这似乎是最简单的整体方法. (2认同)

Vah*_*ian 6

按着这些次序:

  1. Debug
  2. New Breakpoint
  3. 单击Function Breakpoint或简单地按Ctrl+K, B
  4. 将出现一个窗口,按以下格式键入函数名称:

命名空间.类名.函数名

例如,假设您有这样的代码,我想在函数的开头放置一个断点D

namespace A.B{
    public class C{
          public void D(){
               int x= 10;
          }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在Function Breakpoint窗口中你需要输入:A::B::C::D


Mat*_*ing 5

确保在引用的类库dll所在的bin/debug文件夹中有.pdb文件.在调试当前解决方案时,您应该能够从类库中进入代码.当您进入类库时,您将能够设置断点.


Hel*_*ser 5

我知道这是一个老问题,但可能对很多人有所帮助.

要使调试器正常工作,您需要加载调试符号数据库,一个与要调试的程序集同名的.pdb文件.如果它是您创建的解决方案的一部分,您可以从其他解决方案的bin文件夹中复制粘贴它.然后添加一个断点,指定要调试的方法的完整路径,以及它所在的程序集的名称.EX:"MyNamespace.MayClass.MyMethod,MyAssemblyName"

如果你不拥有这些代码,你有2个选项,都涉及一个dissasembler.我使用dotPeek,因为它真的很摇滚.

选项1:使用dotPeek打开程序集并为其创建单个.pdb,然后将其复制到.bin文件夹并按照上述步骤操作.https://www.jetbrains.com/decompiler/help/Generating_PDB_Files.html

选项2:使用dotPeek符号服务器和PDB生成. https://www.jetbrains.com/decompiler/help/Symbol_Server_and_PDB_Generation.html 然后按照上面的说明附加调试器实例.

希望这可以帮助