Запустите отладчик в коде - PullRequest
45 голосов
/ 02 сентября 2011

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

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

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

Спасибо.

Рэнди

Ответы [ 4 ]

99 голосов
/ 02 сентября 2011
System.Diagnostics.Debugger.Launch();
4 голосов
/ 02 сентября 2011

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

0 голосов
/ 26 февраля 2019

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

if (System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break();

Иногда приложение должно запускаться вне Visual Studio.Затем я использую этот код, чтобы позже присоединить отладчик:

using System.Diagnostics;

....

Process[] procName = Process.GetProcessesByName("devenv"); // check if VS currently running

if(procName.Length > 0)
    MessageBox.Show("Wait for debugger attach");

if (System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break(); // force a breakpoint
0 голосов
/ 02 сентября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...