Próbuję debugować aplikację Windows 8 C# Store za pomocą debugera Local Machine. Więc dodałem niepoprawną linię do konstruktora MainPage
po wywołaniu InitializeComponent
. Próbowałem kod, który powoduje DivideByZero
lub NullReferenceException
- z tymi samymi wynikami.Debugowanie aplikacji Windows Store na komputerze lokalnym
Więc wykonać „Start Debugging”, a przerwy debugger tutaj:
#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
UnhandledException += (sender, e) =>
{
if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
};
#endif
informacje stosu nie jest dostępny, to jest niemożliwe do wykrycia, gdzie jest błąd (tylko wiadomość wyjątek pierwszej szansy na wyjście okno daje wskazówkę).
Próbowałem zdefiniować DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
w symbolach preprocesora projektu. Tym razem otrzymałem następujący dziwny komunikat: "Debugger jest dołączony do YourProgram.exe, ale nie jest skonfigurowany do debugowania tego nieobsłużonego wyjątku".
Tylko w przypadku, gdy określony wyjątek jest zaznaczony w oknie dialogowym "Wyjątki" i zdefiniowano DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
, udało mi się złamać linię, która spowodowała błąd.
Jaki jest właściwy sposób na przełamanie niewłaściwej linii, tak jak w debugowaniu tradycyjnych aplikacji komputerowych? Jeśli to możliwe, bez modyfikowania listy Wyjątki. I jaki jest dokładnie cel stałej stałej DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
?
Umieść 'System.Diagnostics.Debugger.Launch();' tuż przed wyrzuceniem wyjątku. Spowoduje to uruchomienie debuggera, dzięki czemu można przejść i zobaczyć, gdzie jest problem. –
@Jack Hughes - zmienia coś w działaniu debuggera, ale staram się nauczyć, jak debugować błąd w nieznanym miejscu. Nie można dodać 'Debugger.Launch' przed każdą linią w programie ... –