Ответ 1
System.Diagnostics.Debugger.Launch();
Мне нужно отладить приложение, которое запускается с одного щелчка мыши. (VS 2010, Excel VSTO с Office 7). На основании учетных данных, предоставленных в приложении для установки одним кликом, пользователь должен увидеть одну из двух страниц-всплесков. Все это отлично работает на моей машине, но при развертывании изменение от значения по умолчанию к второй странице всплеска приводит к ошибке.
В течение жизни я не могу понять, как отлаживать процесс из VS2010. Я могу подключиться к логину перед вводом учетных данных, но я не могу подключиться к Excel, потому что он не запускается, пока я не нажму кнопку OK.
Итак, есть ли способ получить Excel, или, скорее, мой код вызывает отладчик, поскольку он создан, поэтому я могу понять, почему мой ресурс изображения недоступен в развернутом приложении?
Спасибо.
Ренди
System.Diagnostics.Debugger.Launch();
Ответ Juan является лучшим, если у вас установлена Visual Studio. но если целевой машне нет, вам может потребоваться какая-то пауза (я обычно ставил диалоговое окно как первое, что в основном, что заставляет меня ждать, чтобы я присоединился), затем используйте удаленный отладчик для присоединения к нему на вашем компьютере
Чтобы принудительно установить точку останова из кода, используйте:
if (System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break();
Иногда приложение не может быть запущено из Visual Studio, но должно быть отлажено. Я использую этот код для проверки формы внутри приложения, если Visual Studio работает, и предлагаю возможность прикрепить ее к Visual Studio.
using System.Diagnostics;
....
Process[] procName = Process.GetProcessesByName("devenv"); // check if VS currently running
// If Visual Studio is running halt the application by showing a MessageBox and give opportunity to attach the debugger
if(procName.Length > 0)
MessageBox.Show("Wait for debugger attach");
// Force a breakpoint when the debugger became attached
if (System.Diagnostics.Debugger.IsAttached)
System.Diagnostics.Debugger.Break(); // force a breakpoint
вы можете прикрепить к Excel, если он работает достаточно долго, но серьезно я сомневаюсь, что ошибка там.
вы можете прикрепить к запущенным приложениям/процессам и, если символы доступны (сборка отладки), вы можете действительно отлаживать, но приложение должно жить достаточно долго, чтобы вы могли выбрать его для присоединения.
Я думаю, из того, что вы говорите, то, что вам нужно, это правильное исключение и ведение журнала ошибок, что-то вроде Log4Net или NLog, который хранит все (трассировку стека, информацию о деталях...) при каждом исключении, поэтому вы четко определяете какова реальная проблема.