Как отладить exe-файл с несколькими библиотеками DLL, используя точки останова

#c# #visual-studio #debugging #dll

#c# #visual-studio #отладка #dll

Вопрос:

У меня есть myapp.exe , что после некоторой сложной логики запускается другой программой. Я хотел отладить проблемы с myapp.exe точно так же, как Visual Studio, предпочтительно с использованием точек останова. Как этого добиться? exe-файл является консольным приложением и запускается на месте. Это не запущенный процесс, поэтому я не могу подключить отладчик.

Ожидаемое поведение, которое я бы хотел, это:

  • Творите чудеса и устанавливайте точки останова для этого exe и dll
  • Вызовите exe-файл из другой программы
  • Visual Studio достигает точки останова, и я могу отлаживать происходящее

Комментарии:

1. Хороший вопрос и отличная работа для осознания того, что вам нужно хорошо отлаживать, чтобы перейти к следующему этапу мастерства программирования. Честно говоря, поставьте точку останова (F9) в функции, вызывающей у вас проблему, а затем выполните пошаговый код (F11). Вам следует посмотреть короткое видео на YouTube по этой теме, чтобы понять, как использовать немедленное окно, окно стека вызовов, окно просмотра и как редактировать и продолжить, а также перетащить элемент управления кодом (желтая линия), чтобы пропустить строки вверх или вниз.

Ответ №1:

Просто используйте System.Diagnostics.Debugger.Launch() место, куда вы хотите подключить отладчик. Вы можете поместить его непосредственно перед желаемым местоположением точки останова. Windows спросит вас, какой отладчик вы хотите подключить.

Другой способ — проверить систему.Диагностика.Отладчик.Прикрепите свойство и дождитесь отладчика, подобного этому (опрос):

 while (!Debugger.IsAttached)
{
    Thread.Sleep(500);
}
  

Приложение будет работать до тех пор, пока вы не подключите отладчик (в Visual Studio с помощью команды прикрепить к процессу, Ctrl alt P ).
Опять же, просто поместите точку останова после или даже в цикл, и все готово.

Это хорошо известный способ, используемый для отладки приложения-службы Windows, и он может быть полезен также для ваших целей.