Мое основное решение - использовать код из библиотеки служебных классов, который я написал сам, но является частью другого решения. Как установить точку останова в DLL-файле, на который имеется ссылка?
Как установить точку останова в ссылочном коде в Visual Studio?
Ответы (7)
Щелкните «Отладка», «Новая точка останова», «Прервать функцию» и введите полное имя функции.
Namespace.ClassName.ClassName
- person SLaks; 05.08.2019
Ns.ClassName.ctor
- person SLaks; 05.08.2019
В Visual Studio вручную откройте исходный файл указанной DLL, содержащий нужный метод, с помощью меню.
Файл> Открыть> Файл ...
Затем установите точку останова, щелкнув левую границу в редакторе кода. Это позволяет вам прерывать любую строку кода, а не только вызовы функций. Visual Studio показывает точку останова в своего рода отключенном состоянии, поскольку считает, что код недоступен. Просто игнорируйте это; точка останова станет активной после выполнения кода и загрузки библиотеки DLL.
Примечание: вы должны ссылаться на отладочную версию вашей сборки, чтобы это работало.
Вы можете сделать одно из следующего:
- Добавьте проект DLL в решение, содержащее ваш исполняемый файл. Затем вы можете установить точки останова как обычно.
- Вместо этого вы можете просто открыть проект DLL и использовать Debug -> Attach to Process, чтобы присоединиться к вашему запущенному EXE.
Я знаю, что это старый вопрос, но он может помочь многим.
Для правильной работы отладчика вам необходимо загрузить базу данных отладочных символов, файл .pdb с тем же именем, что и сборка, которую вы хотите отлаживать. Если это часть созданного вами решения, вы можете просто скопировать и вставить его из папки bin другого решения. Затем добавьте точку останова, указав полный путь к методу, который нужно отлаживать, а также имя сборки, в которой он находится. EX: «MyNamespace.MayClass.MyMethod, MyAssemblyName»
Если вы не владеете кодом, у вас есть 2 варианта, оба включают дизассемблер. Я использую для этого dotPeek, потому что он действительно хорош.
Вариант 1: вы открываете сборку с помощью dotPeek и создаете для нее единственный .pdb, затем копируете его в свою папку .bin и выполняете шаги, описанные выше. https://www.jetbrains.com/decompiler/help/Generating_PDB_Files.html
Вариант 2: используйте dotPeek Symbol Server и PDB Generation. https://www.jetbrains.com/decompiler/help/Symbol_Server_and_PDB_Generation.html После этого следуйте приведенным выше инструкциям, чтобы подключить экземпляр отладчика.
Надеюсь это поможет
Убедитесь, что у вас есть файл .pdb в папке bin / debug, где находится dll библиотеки классов, на которую указывает ссылка. Когда вы отлаживаете свое текущее решение, вы должны иметь возможность войти в код из своей библиотеки классов. Когда вы войдете в библиотеку классов, вы сможете установить точки останова.
Следуй этим шагам:
- Go to
Debug
- Go to
New Breakpoint
- Щелкните
Function Breakpoint
или просто нажмитеCtrl+K, B
- появится окно, введите имя функции в следующем формате:
пространство имен.ClassName.FunctionName
Например, предположим, что у вас есть такой код, и я хочу поставить точку останова в начале функции D
:
namespace A.B{
public class C{
public void D(){
int x= 10;
}
}
}
Итак, в окне Function Breakpoint
вам нужно ввести: A.B.C.D
Это не мой собственный ответ, это было предложение Фрепа Д-Оронжа в одном из комментариев выше. Это просто и работает без сбоев:
«Мне легко - просто запустите два экземпляра Studio рядом. Ctrl-F5 на« основном », чтобы запустить без подключенного отладчика, затем подключитесь к процессу с экземпляром студии, которая редактирует проект библиотеки»
Все заслуги причитаются ему.