
Problemi con il computer. Li abbiamo tutti prima o poi. Conosci i dettagli degli errori, affermazioni, errori e altro è vitale per capire di più sul problema in questione. Scopri tutto su di esso.
Che cos'è un? Reclamo?
Quando uno sviluppatore inizia a scrivere codice, sarà presto presente if
dichiarazioni in esso. un if
La dichiarazione viene utilizzata ogni volta che è necessario verificare una determinata condizione. Come esempio, si potrebbe scrivere uno pseudocodice if
dichiarazione sulla prossima strada:
Se (livello dell'acqua > segno dell'acqua alta) poi { rilancio_allerta }
In altre parole, se il livello dell'acqua supera il segno alto, Viene generato un avviso. Ma forse il sensore dell'acqua è rotto, pertanto aggiorniamo il codice in modo che corrisponda:
Se (sensor_readout == senza senso) poi {
raise_error
fail
}altro{
Se (livello dell'acqua > segno dell'acqua alta) poi {
rilancio_allerta
}
}
geniale, ora otterremo un errore e falliremo la routine se il sensor_readout non ha senso. E solo se il coraggio si dimostra sensato (a causa del else
clausola, In altre parole, cosa fare nella situazione opposta), procedi a controllare il water_level con l'high_water_mark.
Nonostante questo, forse qualcuno ha spento il sensore. Possiamo andare avanti così per un po'. Possiamo coprire ogni possibile scenario immaginabile e mancarne ancora qualcuno. Certo, potremmo coprire tutte le possibili situazioni con una combinazione else
clausola e verificare che ogni condizione sia confrontata con un'altra, ma anche in questi casi, avremmo potuto trascurare alcune combinazioni di variabili.
Anche se avessimo solo un insieme limitato di variabili con cui lavorare, il numero di possibili combinazioni in cui si può trovare un pacchetto software è abbastanza numeroso. E per di più, questo tipo di if
I test condizionali si verificano abbastanza regolarmente in quasi tutti i software.
Ragionando un po' di più su questo dilemma, capiamo subito che noi (come sviluppatori) potremmo (come tutti gli umani commettiamo errori) prima o poi introdurremo un codice che permetta al software di funzionare in un territorio indefinito. La variabile x è impostata su un valore specifico, la variabile e viene assegnata a un'altra, e non c'era alcuna disposizione per questo nel codice.
Questa è esattamente la situazione che una dichiarazione può, fino a un certo punto, fornire. Un'affermazione è un'altra condizione (pensalo come un altro if
dichiarazione.) che indica se c'è una certa situazione strana / raro / non pianificato / imprevisto e, generalmente, gestisce una situazione del genere arrestando il programma invece di continuare a funzionare in uno stato indefinito / sconosciuto.
Sebbene la rete che restituirà l'asset test sia ancora limitata all'intelligenza e alle capacità dello sviluppatore che implementa l'asserzione, un'asserzione può spesso essere fatta più a lungo dei limiti limitati di if
affermazioni che mettono alla prova lo stato di più variabili, o potrebbe essere reso abbastanza specifico per evitare certe situazioni pericolose.
Come esempio, diciamo che il nostro piccolo sensore dell'acqua è montato in un serbatoio di pioggia. Perché, l'acqua non dovrebbe mai bollire. Nonostante questo, se il nostro sensore dell'acqua avesse un misuratore di temperatura, potremmo assicurarci, anche se non sarebbe mai successo / non dovrebbe mai succedere. Aggiungiamo un'asserzione allo pseudocodice che abbiamo iniziato sopra.
Invece del punto di ebollizione (100 gradi Celsius), cercheremo un massimo più ragionevole di 70 gradi Celsius, che non dovrebbe mai essere raggiunto quando si pensa di intrappolare l'acqua piovana, almeno, secondo noi. Ricorda la parola “parere”, poiché diventa importante quando si considera l'intelligenza dello sviluppatore che implementa il reclamo. (Maggiori informazioni su questo di seguito).
Se (sensor_readout == senza senso) poi { raise_error fail }altro{ Asserire (water_temp < 70.0){ raise_assert_message fail exit } Se (livello dell'acqua > segno dell'acqua alta) poi { rilancio_allerta } }
Scriviamo la dichiarazione al contrario. Il codice dovrebbe indicare che la temperatura dell'acqua è inferiore 70 gradi centigradi. Se non è così, eseguirà il blocco di codice, che genererà un messaggio di asserzione, e quindi il software si arresterà in modo anomalo e si chiuderà.
Le asserzioni nel codice attuale sono abbastanza simili all'esempio sopra. Controllano se una determinata situazione si applica o meno e, successivamente, fermare (o bloccare in modo controllato) il programma / software in questione.
Spesso, queste risorse sono registrate nei file di registro dell'applicazione o anche direttamente nell'output dello schermo. Rivedili e / oppure cerca spesso una copia del messaggio esatto di affermazione sul tuo motore di ricerca preferito (se l'errore è stato trovato in precedenza) ti porterà a una segnalazione di bug al riguardo.
I messaggi di affermazione sono spesso errori, anche se possono essere semplicemente errori nel ragionamento dello sviluppatore. Dopotutto, Chi dice dentro 1000 anni, la pioggia non può superare 70 gradi centigradi? (Non sperare!)
Un messaggio di asserzione è l'output presentato dall'asserzione introdotta dagli sviluppatori nel codice, In altre parole, l'effettivo output testuale generato dal software e visualizzato sullo schermo o nei log. Come esempio, immagina che questo messaggio di asserzione venga visualizzato per il programma sopra.
Affermare: (water_temp < 70): (88 < 70): falso
Anche se sembra un po' criptico (come alcuni messaggi di affermazione), guardando un po' più da vicino ci fa capire che nella seconda parte, water_temp
è stato scambiato per 88 e che l'output è false
(In altre parole, l'affermazione water_temp <70 falló debido a que el agua estaba a 88 grados y, por eso, la aserción desencadenó el mensaje de aserción). Sí, puede resultar un poco confuso.
Armati di queste nuove abilità, il debug di un messaggio di asserzione la prossima volta che ne vedi uno diventa molto più semplice. Inoltre, è possibile rendere più facile capire esattamente cosa non andava quando l'applicazione è stata interrotta..
Che cos'è un? Errore?
Gli errori del computer si verificano sempre e per un'ampia varietà di motivi. Si verificano sia a livello di sviluppatore che di utente e in ogni fase intermedia. Come esempio, un tecnico DevOps potrebbe dimenticare di includere un file richiesto, o il firmatario di un pacchetto può utilizzare la chiave sbagliata per firmare il software, e così via.
In sintesi, un errore del computer può essere impostato come ostacolo con l'hardware o il software del computer. Ci sono alcuni esempi di bug anche nello pseudocodice limitato sopra. Quando il sensor_readout == nonsensical
la condizione è soddisfatta, viene visualizzato un messaggio di errore.
Ci sono alcuni errori che sono più comuni di altri. Come esempio, usare il percorso o il nome del file sbagliato è un errore comune. Problemi legati all'energia (come esempio, batteria scarica) sono anche errori abbastanza comuni.
Gli errori sono abbastanza separati e diversi dai messaggi di asserzione, anche se il messaggio di asserzione stesso può essere visto come un errore, O meglio, come una situazione indefinita che ora copre l'asserzione. Generalmente, Un errore del computer si traduce abbastanza bene in “Ho bisogno di un essere umano per risolvere questo problema”.
Man mano che i computer diventano più intelligenti e l'intelligenza artificiale progredisce, speriamo che si verifichino meno errori, anche se c'è molto spazio per la discussione e anche per le discussioni in quell'area.
Che cos'è un? Shock?
Un crash del computer può assumere molte forme. Conosciamo tutti le schermate blu di Microsoft Windows, che si verificava quando un'applicazione si comportava in modo anomalo o alcune parti fondamentali del sistema operativo o dell'hardware della macchina non funzionavano.
Nonostante questo, La maggior parte delle volte, un crash è un'applicazione software che si trova in una situazione indefinita. Ci sono molti scenari possibili indefiniti di questo tipo. È possibile che un computer abbia provato a scrivere su un'area di RAM che era già in uso, cosa ha turbato se stessa o un'altra applicazione, o forse ti sei imbattuto in uno scenario in cui hai provato a dividere per zero (che è impossibile), o qualche situazione equivalente.
Molti sistemi operativi scriveranno un file di dump del kernel (se così configurato), ciò che consente a uno sviluppatore e, A volte, a un utente finale con una certa abilità, eseguire il debug del problema in questione.
Se vuoi saperne di più sul debug quando le cose vanno male, inclusa l'analisi dei file di dump del kernel, Potresti essere interessato al nostro post Debug con GDB: introduzione.
Un arresto anomalo può anche essere il risultato di un'applicazione che si trova in una situazione indefinita, che non viene gestito tramite un errore (il modo più semplice per un'app di segnalare qualcosa di sbagliato) o un'affermazione (un ostacolo più profondo, originariamente escluso dallo sviluppatore come impossibile ma si verifica ancora).
Allo stesso tempo, nota che una compilazione di programmi per il test, In altre parole, con informazioni di debug (incluse solo asserzioni a livello di debug) incorporato nel risultato finale binario, può fallire quando si produce un'asserzione, Come è il caso?, come esempio, con MySQL. server.
Fine
In questo post, esploriamo i concetti di affermazioni, errori e crash, così come il modo in cui sono correlati. Diamo uno sguardo approfondito a come apparirebbero le affermazioni all'interno del codice e come questo si riferisce a un esempio di vita reale di monitoraggio del livello e della temperatura dell'acqua con un sensore dell'acqua.. La prossima volta che ti imbatti in un messaggio di affermazione, dai un'occhiata più da vicino e divertiti con il debug.