Rapporti di arresto anomalo

Che cosa conserva la stazione quando si chiude in modo imprevisto, che cosa invia e quando chiede, e i due comandi di debug che porta un avvio di sviluppo.

Visualizza come Markdown

Rapporti di arresto anomalo è l'unica riga del gruppo DIAGNOSTICA della pagina Impostazioni. Un arresto anomalo non viene mai inviato mentre l'applicazione sta cadendo: viene catturato in un file, e l'avvio successivo lo invia oppure lo mostra e chiede. Questa sezione contiene l'unico interruttore che decide quale delle due cose. La pagina richiede il permesso Modificare le impostazioni.

Invia automaticamente i rapporti di arresto anomalo

Campo Che cos'è Valori / predefinito Effetto
Invia automaticamente i rapporti di arresto anomalo "Quando l'applicazione si arresta in modo anomalo, invia il rapporto al riavvio successivo senza chiedere. Se disattivato, il rapporto viene mostrato e ne viene chiesto prima l'invio." Attivo o disattivo. Disattivo per impostazione predefinita. Attivo: l'avvio successivo invia il rapporto catturato in silenzio e lo cancella una volta che il server lo ha accettato. Disattivo: il primo avvio visibile apre la finestra del consenso.

Mentre il runtime è fermo questa pagina non viene disegnata affatto (vedere Impostazioni). Lo stesso consenso è offerto dentro la finestra stessa, come casella da spuntare "Invia sempre automaticamente i rapporti di arresto anomalo", e spuntandola lì si attiva questo interruttore. Sotto l'interruttore la scheda dice: "Per segnalare un difetto, proporre un miglioramento o richiedere un driver, usare la pagina Account Ganter." Quel modulo è Commenti e segnalazioni, perché invia con l'account Ganter.

Che cosa contiene un rapporto

Quando un errore non gestito fa cadere l'applicazione, i gestori globali scrivono un unico file, crash\pending-crash.json sotto la radice dei dati della stazione, e tengono soltanto l'arresto anomalo più recente. Contiene:

  • la versione dell'applicazione e la versione di Windows;
  • dove l'errore è stato intercettato (Dispatcher, AppDomain, TaskScheduler, oppure Startup per un avvio che non è arrivato in fondo);
  • il tipo di eccezione, il suo messaggio e il testo completo dello stack, eccezioni interne comprese;
  • le ultime 60 righe del file di diario più recente, come contesto che porta al guasto;
  • il momento in cui è accaduto.

Prima che venga scritto, il nome utente di Windows e il percorso del profilo vengono sostituiti con <user> e <userprofile> ovunque compaiano. Quella ripulitura è una rete di sicurezza, non una garanzia: le righe di diario in forma libera possono portare altri nomi, ed è per questo che la finestra mostra l'intero contenuto prima che esca qualcosa.

Con l'interruttore disattivo, il primo avvio visibile dopo un arresto anomalo apre Inviare il rapporto di arresto anomalo? sopra la shell: "L'ultima volta Ganter Lab si è chiuso in modo imprevisto. L'invio di questo rapporto aiuta a correggere il problema. Contiene l'errore e una breve parte del diario recente. Esaminarlo qui sotto prima di inviarlo." Il riquadro Dettaglio dell'arresto anomalo mostra esattamente ciò che verrebbe inviato, con un pulsante Copia che mette lo stesso testo negli appunti ("Copiato" per un momento) così lo si può cercare oppure consegnare all'assistenza. Se gli appunti rifiutano, il pulsante dice invece "Copia non riuscita", così una copia che non è avvenuta non viene scambiata per una riuscita; il testo resta a schermo e si può selezionare a mano.

Comando Che cosa fa In grigio quando (situazione) Non disegnato quando (ruolo)
Invia sempre automaticamente i rapporti di arresto anomalo (casella da spuntare) Attiva l'interruttore qui sopra alla chiusura della finestra, sia che questo rapporto venga inviato sia che non lo venga. Mentre il runtime è fermo (suggerimento "Runtime fermo"). La finestra appartiene alla shell, quindi viene disegnata anche quando questa pagina non lo è. Mai.
Non inviare Scarta questo rapporto e cancella il file; non viene più chiesto nulla per esso. Mai. Mai.
Invia il rapporto Lo invia. "Rapporto di arresto anomalo inviato" come notifica in caso di riuscita; "Rapporto di arresto anomalo non inviato" con il motivo quando non è stato possibile raggiungere il server, e in quel caso il file resta e lo si può inviare adesso oppure la domanda torna all'avvio successivo. Mai. Mai.

Un avvio nascosto nell'area di notifica (Avvia con Windows, oppure un avvio con --tray) non mostra nessuna finestra; il rapporto aspetta il primo avvio visibile. Con l'interruttore attivo l'invio avviene in background senza nessuna finestra, e una stazione che era senza rete conserva il file e riprova all'avvio successivo.

Il rapporto va all'endpoint delle segnalazioni del server Ganter. Viene attribuito all'account Ganter con cui si è effettuato l'accesso nella pagina Account quando ce n'è uno, e accettato senza account altrimenti. Non esce nient'altro dalla stazione: non c'è nessuna telemetria d'uso.

I comandi di debug

Un avvio di sviluppo dell'applicazione porta due pulsanti sotto l'interruttore; una versione installata non ne ha nessuno.

Comando Che cosa fa In grigio quando (situazione) Non disegnato quando (ruolo)
Simula un arresto anomalo (debug) Solleva un errore non gestito sul thread dell'interfaccia, così il percorso di cattura scrive un vero file di arresto anomalo e l'avvio successivo esercita il flusso del consenso. Mai. Non in un avvio di rilascio.
Cattura la schermata (debug) Esegue la stessa cattura di schermata che usano gli strumenti di interfaccia dell'agente, nello stesso processo, e stampa il risultato sotto il pulsante: "Salvato: <percorso>" oppure "Cattura non riuscita: <motivo>". Su un host senza finestra il risultato dice che la cattura non è disponibile. Mai. Non in un avvio di rilascio.

Ciò che questa sezione non fa

Qui non c'è nessun visualizzatore di diario: il diario vive in Eventi, nella sua scheda Console, insieme alla cattura diagnostica e al pacchetto di supporto. Le segnalazioni di difetti e le richieste stanno in Commenti e segnalazioni. Il file dell'arresto anomalo non si può modificare dall'applicazione, e l'applicazione non invia mai nulla senza l'interruttore o senza l'Invia della finestra.