Mam aplikację konsolową, która zawiesza się zaraz po uruchomieniu, ale wyświetla kilka bardzo przydatnych informacji (do mojego debugowania) przed jej zakończeniem.
Uruchomiłem tę aplikację w systemie Windows 8.1, gdzie pojawiło się okno komunikatu z komunikatem o błędzie „... przestał działać”. Okno konsoli pozostanie otwarte, abym mógł odczytać dane wyjściowe konsoli, dopóki nie kliknę „Zamknij program” w oknie komunikatu o błędzie.
Przeprowadzam migrację do systemu Windows 10. Niestety system Windows 10 nie wyświetla komunikatu „... przestał działać”. Zamiast tego zamyka konsolę automatycznie, gdy tylko aplikacja ulegnie awarii.
Widzę to samo zjawisko na komputerach z systemem Windows 10 moich kontaktów, chociaż powiedziano mi także o jednym komputerze z systemem Windows 10, w którym nadal pojawia się okno komunikatu o błędzie.
Czy istnieje sposób, aby zmusić system Windows 10 do ponownego wyświetlenia okna komunikatu (globalnie lub tylko dla jednej aplikacji)?
Próbowałem różnych obejść, ale wszystkie mają swoje wady:
- Jeśli uruchomię aplikację konsoli z okna konsoli (
cmd
), nadal otworzy się dodatkowe okno konsoli, więc moje okno konsoli pozostanie puste. (Być może jest to związane z daną aplikacją wymagającą podwyższonych uprawnień i proszeniem o nie przy uruchamianiu?) - Robiąc to samo i przesyłając dane wyjściowe do pliku, po prostu tworzy pusty plik.
- Mogę zmodyfikować kod źródłowy aplikacji konsolowej, aby na końcu poczekać na dane wejściowe, ale jest to zmiana, którą muszę wprowadzić tylko w lokalnej kopii roboczej, a to oznacza, że muszę codziennie odbudowywać tę aplikację ( ponieważ mój lokalny plik binarny zostanie w przeciwnym razie zastąpiony przez najnowszą wersję z serwera kompilacji).
- Mogę znaleźć to samo wyjście w dzienniku zdarzeń Windows, ale jest to dość żmudna alternatywa, biorąc pod uwagę, że przeglądarka dziennika zdarzeń jest dość powolną aplikacją i ma tendencję do zakopywania odpowiednich danych wśród tysięcy innych nieciekawych wpisów w dzienniku.
... has stopped working
komunikat jest nadal wyświetlany w systemie Windows 10, jeśli dotyczy, więc jeśli tak się nie dzieje, błąd jest spowodowany przez coś, co mu zapobiega. ... has stopped working
powinno się to zdarzyć tylko wtedy, gdy system Windows uważa, że plik wykonywalny został zawieszony, jeśli aplikacja ulega awarii z nieobsługiwanym wyjątkiem, komunikat nie będzie wyświetlany w żadnej wersji systemu Windows. Jeśli program wymaga podwyższonych uprawnień w systemie Windows 10, a nie w systemie Windows 8, brzmi to jak różnica konfiguracji między dwiema instalacjami.
ReflectionTypeLoadException
, po czym w Win8 pojawia się komunikat „... przestał działać”, podczas gdy nie działa w Win10.