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

Удаленная отладка Visual Studio при запуске приложения

Насколько я понимаю, единственный способ использовать удаленный отладчик - запустить целевое приложение, а затем подключиться к нему через Visual Studio. Есть ли способ зафиксировать все точки останова с самого начала программы?

В моей программе есть код, который мне нужно отлаживать, и я никогда не смогу подключить отладчик достаточно быстро, чтобы захватить этот исполняемый код.

4b9b3361

Ответ 1

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

System.Diagnostics.Debugger.Launch();

Когда эта строка будет удалена, она предложит вам подключить отладчик, ожидая от вас ответа. Поскольку вы используете удаленный отладчик, вы должны иметь возможность подключиться в этот момент, а затем просто отменить диалог. Надеюсь, это поможет.

Ответ 2

Решение

System.Diagnostics.Debugger.Launch 

тоже не работал у меня. Тем не менее, мне удалось решить мою проблему с записью в моем приложении, запустив следующее:

while (!System.Diagnostics.Debugger.IsAttached)
    System.Threading.Thread.Sleep(100);

Таким образом, приложение будет ждать, пока не будет прикреплен отладчик.

Ответ 3

С Visual Studio Pro 2010, создающим приложение .NET 4, это не работает для меня.

По-видимому, это известная ошибка:

https://connect.microsoft.com/VisualStudio/feedback/details/611486/debugger-launch-is-now-crashing-my-net-application-after-upgrading-to-net-4-0

A (несколько хакерский) обходной путь на тот момент, который работает для меня, - это просто запустить приложение MessageBox() прямо в начале инициализации главного окна:

public partial class MainWindow : Form
{
    public MainWindow()
    {
        // To allow you time to attach a remote debugger ...
        MessageBox.Show("Please attach debugger");

        InitializeComponent();
        ...

Теперь вы можете подключить удаленный отладчик VS на досуге, а затем нажать ОК в окне сообщения.

Уродливый, но функциональный.

Ответ 4

Правильным решением для меня была комбинация ответов.

Цикл while проверит, подключен ли отладчик из Visual Studio, и выйдет из цикла, когда он подключен.

        System.Diagnostics.Debugger.Launch();
        while (!System.Diagnostics.Debugger.IsAttached)
        {
            System.Threading.Thread.Sleep(100);
        }

Ответ 5

На целевом компьютере настройте удаленный отладчик Visual Studio, который соответствует году Visual Studio на локальном компьютере.

Обратите внимание на строку, которая дает вам имя сервера.

На вашем локальном компьютере в Visual Studio откройте свойства вашего запускаемого проекта, а затем откройте раздел отладки.

Установите флажок "использовать удаленный компьютер", а затем введите в текстовое поле имя сервера, которое вы получили от Visual Studio Remote Debugger.

Под "Начать действие" выберите "Запустить внешнюю программу". Затем укажите в поле путь к .exe, который вы хотите запустить на целевой машине.

Теперь, когда вы нажимаете кнопку запуска с локального компьютера, он запускает программу на целевом компьютере с подключенным отладчиком.