Удаленная отладка Visual Studio при запуске приложения
Насколько я понимаю, единственный способ использовать удаленный отладчик - запустить целевое приложение, а затем подключиться к нему через Visual Studio. Есть ли способ зафиксировать все точки останова с самого начала программы?
В моей программе есть код, который мне нужно отлаживать, и я никогда не смогу подключить отладчик достаточно быстро, чтобы захватить этот исполняемый код.
Ответы
Ответ 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, который вы хотите запустить на целевой машине.
Теперь, когда вы нажимаете кнопку запуска с локального компьютера, он запускает программу на целевом компьютере с подключенным отладчиком.