Visual Studio: 在调试之前打开一个符号源文件并设置断点

Visual Studio: Open up a symbol source file prior to debugging and set breakpoint

我有一个项目,其中引用的程序集有可用的符号文件。 pdb 和源文件本身。 (它们都是我自己的图书馆)。这些符号都列在工具/选项/调试/符号中,标记它们的位置。没关系。

但它正在与他们合作,我想知道:

Visual studio 中是否有一种方法可以在必须逐行调试以获取有问题的代码之前在符号文件中设置断点。

明确地说,如果我逐行执行,我最终可以找到我想要的源代码(因为使用了符号文件)。但有时到达那个位置并不容易,因为它嵌套在多个符号文件中。但是一旦我最终深入并找到代码,我就可以设置断点,然后从那里停止并启动主应用程序并顺利到达该位置。文件代码和所有文件甚至都列在打开的文件窗格中,以便于查看。

有什么办法,如果我知道我要中断的文件和代码行,在 VS 中打开该文件并直接设置断点?

希望我描述清楚了。让我知道是否需要改写。

发送

好的。知道必须有办法。而且非常简单。

如前所述,如果您有适用于您正在使用的 Nuget 包的符号和源代码,请按照以下步骤操作:

  1. 在Visual Studio中打开有问题的主项目。
  2. 在 VS 中,单击“文件”/“打开文件”...
  3. 在您的 PACKAGES 文件夹下,找到您要设置断点的引用的包。
  4. 在该包中找到与 pdb 文件一起打包的源代码文件夹。
  5. 在那里你会找到源代码。现在找到要放置断点的文件。单击该文件以打开 Visual Studio 中的文件。
  6. 该文件现在已在您的 VS 查看器中打开,但未作为新文件包含在您的项目中(好事)。
  7. 在你想要的地方放置断点。
  8. 运行解决方案。现在,您不必通过整个解决方案来获取要使用该断点查看的代码!

真松了一口气!

我打赌你想要放置断点的代码在函数中 (;)) 所以我会使用 Visual Studio 中的 New breakpoint 选项。这允许您输入一个方法名称,VS 在进入该方法时应该中断(所以基本上是在函数名称之后的第一个 {)。

按下 CTRL+B 后,您将看到对话框

在此指定要放置断点的函数名称。

您可以仅指定名称(如 AppendText)或完全限定名称(带命名空间 - System.Windows.Forms.TextBoxBase.AppendText)。如果您想将其缩小到特定模块用户 module_name!function_name 语法。如果需要,您可以指定要在哪个重载函数上中断。

您可以通过将鼠标悬停在该对话框中的 (i) 图标上来获取所有这些信息。