Подтвердить что ты не робот

Запустить отладчик в коде

Мне нужно отладить приложение, которое запускается с одного щелчка мыши. (VS 2010, Excel VSTO с Office 7). На основании учетных данных, предоставленных в приложении для установки одним кликом, пользователь должен увидеть одну из двух страниц-всплесков. Все это отлично работает на моей машине, но при развертывании изменение от значения по умолчанию к второй странице всплеска приводит к ошибке.

В течение жизни я не могу понять, как отлаживать процесс из VS2010. Я могу подключиться к логину перед вводом учетных данных, но я не могу подключиться к Excel, потому что он не запускается, пока я не нажму кнопку OK.

Итак, есть ли способ получить Excel, или, скорее, мой код вызывает отладчик, поскольку он создан, поэтому я могу понять, почему мой ресурс изображения недоступен в развернутом приложении?

Спасибо.

Ренди

4b9b3361

Ответ 1

System.Diagnostics.Debugger.Launch();

Ответ 2

Ответ Juan является лучшим, если у вас установлена ​​Visual Studio. но если целевой машне нет, вам может потребоваться какая-то пауза (я обычно ставил диалоговое окно как первое, что в основном, что заставляет меня ждать, чтобы я присоединился), затем используйте удаленный отладчик для присоединения к нему на вашем компьютере

Ответ 3

Чтобы принудительно установить точку останова из кода, используйте:

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

Ответ 4

вы можете прикрепить к Excel, если он работает достаточно долго, но серьезно я сомневаюсь, что ошибка там.

вы можете прикрепить к запущенным приложениям/процессам и, если символы доступны (сборка отладки), вы можете действительно отлаживать, но приложение должно жить достаточно долго, чтобы вы могли выбрать его для присоединения.

Я думаю, из того, что вы говорите, то, что вам нужно, это правильное исключение и ведение журнала ошибок, что-то вроде Log4Net или NLog, который хранит все (трассировку стека, информацию о деталях...) при каждом исключении, поэтому вы четко определяете какова реальная проблема.