Jak rozumiem teraz, jedynym sposobem na użycie zdalnego debuggera jest uruchomienie aplikacji docelowej, a następnie dołączenie jej za pomocą wizualnego studio. Czy istnieje sposób na uchwycenie wszystkich punktów przerwania od samego początku programu? W moim programie jest kod, którego potrzebuję do debugowania i nigdy nie będę mógł dołączyć do debuggera wystarczająco szybko, aby przechwycić ten kod wykonawczy.Visual Studio Zdalne debugowanie przy uruchamianiu aplikacji
Odpowiedz
Jeśli można zmienić kod, spróbuj wstrzykiwanie tej linii kodu w momencie startu aplikacji:
System.Diagnostics.Debugger.Launch();
Gdy ta linia jest trafiony zostanie poproszony o dołączenie debuggera, skutecznie czeka na Ciebie reagować. Ponieważ używasz zdalnego debuggera, powinieneś być w stanie dołączyć w tym momencie, a następnie po prostu anulować okno dialogowe. Mam nadzieję że to pomoże.
Dobra odpowiedź. Dzięki! – Tim
Czy nie powinno to być 'System.Diagnostics.Debugger.Launch();'? Jest to wywołanie metody bez żadnych argumentów, i na końcu wymaga średnika, jak każde polecenie. –
Z Visual Studio Pro 2010 budując aplikację .NET 4, to nie działa dla mnie.
Najwyraźniej jest to znany błąd:
A (nieco hacky) obejście na chwilę, która pracuje dla mnie jest po prostu mieć aplikację zwymiotować MessageBox() na samym początku głównego okna inicjalizacji:
public partial class MainWindow : Form
{
public MainWindow()
{
// To allow you time to attach a remote debugger ...
MessageBox.Show("Please attach debugger");
InitializeComponent();
...
teraz można dołączyć zdalnego debugera VS w swoim czasie wolnym, a następnie naciśnij przycisk OK w oknie komunikatu.
Brzydki, ale funkcjonalny.
Rozwiązanie
System.Diagnostics.Debugger.Launch
nie działa na mnie też. Jednak udało mi się rozwiązać mój problem pisząc w mojej aplikacji uruchamia się, co następuje:
while (!System.Diagnostics.Debugger.IsAttached)
System.Threading.Thread.Sleep(100);
ten sposób aplikacja będzie czekać, aż zostanie dołączony debugger.
To rzeczywiście dobre rozwiązanie. Pakowany w '' '#ifdef DEBUG''' i' '' endif''' nie zakłóca kompilacji wydania i działa bezbłędnie podczas debugowania na moim komputerze. Ale kiedy muszę zdalnie debugować, po prostu czeka. Dzięki! – ecth
@HaraldDutch opisuje świetne rozwiązanie tutaj: http://stackoverflow.com/questions/19512041/remote-debugging-how-to-start-the-debugging-process-on-a-different-computer – eFloh