Как установить точку останова в ссылочном коде в Visual Studio? - PullRequest
49 голосов
/ 11 апреля 2010

Мое основное решение - использовать код из библиотеки служебных классов, который я написал сам, но является частью другого решения. Как установить точку останова в указанном DLL-файле?

Ответы [ 7 ]

50 голосов
/ 11 апреля 2010

Нажмите «Отладка», «Новая точка останова», «Прерывание функции», затем введите полное имя функции.

22 голосов
/ 26 августа 2013

В Visual Studio откройте исходный файл указанной библиотеки DLL, который содержит нужный метод, вручную, используя меню

Файл> Открыть> Файл ...

Затем установите точку останова, нажав на левую границу в редакторе кода. Это позволяет вам разбивать любую строку кода, а не только вызовы функций. Visual Studio показывает точку останова в неактивном состоянии, потому что считает, что код недоступен. Просто игнорируй это; точка останова станет активной после запуска кода и загрузки DLL.

Примечание: вы должны ссылаться на версию отладки вашей сборки, чтобы это работало.

16 голосов
/ 11 апреля 2010

Вы можете сделать одно из следующих действий:

  1. Добавьте проект DLL к решению, содержащему ваш исполняемый файл. Затем вы можете установить контрольные точки как обычно.
  2. Вместо этого вы можете просто открыть проект DLL и использовать отладку -> Присоединить к процессу, чтобы присоединить к запущенному EXE
5 голосов
/ 08 июля 2015

Я знаю, что это старый вопрос, но может помочь многим.

Чтобы отладчик работал правильно, вам нужно загрузить базу данных символов отладки, файл .pdb с тем же именем, что и сборка, которую вы хотите отлаживать. Если это часть созданного вами решения, вы можете просто скопировать и вставить его из папки bin другого решения. Затем добавьте точку останова, указав полный путь к методу, который вы хотите отладить, плюс имя сборки, в которой он находится. Пример: "MyNamespace.MayClass.MyMethod, MyAssemblyName"

Если у вас нет кода, у вас есть 2 варианта, оба с использованием disasembler. Я использую dotPeek для этого, так как он действительно качается.

Вариант 1: вы открываете сборку с помощью dotPeek и создаете для нее один файл .pdb, затем копируете его в папку .bin и выполняете действия, описанные выше. https://www.jetbrains.com/decompiler/help/Generating_PDB_Files.html

Вариант 2: использовать сервер символов dotPeek и PDB Generation. https://www.jetbrains.com/decompiler/help/Symbol_Server_and_PDB_Generation.html После этого следуйте инструкциям выше, чтобы прикрепить экземпляр отладчика.

Надеюсь, это поможет

5 голосов
/ 11 апреля 2010

Убедитесь, что у вас есть файл .pdb в папке bin / debug, где находится указанная dll библиотеки классов. Когда вы отлаживаете свое текущее решение, вы должны иметь возможность войти в код из вашей библиотеки классов. Когда вы войдете в библиотеку классов, вы сможете установить точки останова.

0 голосов
/ 29 мая 2019

выполните следующие действия:

  1. Перейти к Debug
  2. Перейти к New Breakpoint
  3. Нажмите Function Breakpoint или просто нажмите Ctrl+K, B
  4. появится окно, введите имя функции в следующем формате:

namespace.ClassName.FunctionName

Например, предположим, что у вас есть такой код, и я хочу поставить точку останова в начале функции D:

namespace A.B{
    public class C{
          public void D(){
               int x= 10;
          }
    }
}

Так в Function Breakpoint окне нужно набрать: A.B.C.D

0 голосов
/ 08 декабря 2016

Это не мой собственный ответ, это было предложение Frep D-Oronge в одном из комментариев выше. Это легко и работает без икоты:

"Мне легко - просто запустите два экземпляра Studio бок о бок. Ctrl-F5 на« основном », чтобы запустить без подключенного отладчика, затем присоедините к процессу экземпляр Studio, который редактирует проект библиотеки. «

Все кредиты причитаются ему.

...