Controllore

Checker può aiutare a trovare bug che gli strumenti standard non possono sempre trovare.
Scarica ora

Controllore Classifica e riepilogo

Annuncio pubblicitario

  • Rating:
  • Licenza:
  • GPL
  • Prezzo:
  • FREE
  • Nome editore:
  • Tristan Gingold
  • Sito web dell'editore:
  • http://www.gnu.org/software/checker/

Controllore Tag


Controllore Descrizione

La correzione può aiutare a trovare bug che gli strumenti standard non possono sempre trovare. La correzione può aiutare a trovare bug che gli strumenti standard non possono sempre trovare. L'esempio migliore è perdite di memoria. Una perdita di memoria è una zona di memoria, assegnata con MalloC che non è più utilizzata. Quindi la memoria assegnata è persa. Ciò significa che il programma ha bisogno di più memoria e funziona più lentamente, poiché il tuo sistema operativo potrebbe avviare lo scambio. Rileva accessi di memoria cattivi come: lettura della memoria non inizializzata, scrivendo in una zona libera, scrivendo o leggendo fuori da un blocco di memoria e utilizzando puntatori null. Ciò è particolarmente utile per i migliori programmi con molte funzioni.Checker mantiene bitmap per tenere traccia dello stato di ciascun byte di memoria. Lo stato può essere scrivibile, leggibile, entrambi o nessuno. Quando la memoria viene assegnata, la nuova memoria diventa solo la scrittura: non è consentito leggerlo perché non è stato inizializzato. Ma quando scrivi a questo nuovo blocco, quei byte diventano leggibili e scrivibili. Quando il blocco è stato liberato, i byte diventano illeggibili e non scrivibili. Le zone rosse sono memoria illeggibile e non scrittabili, in modo che ogni accesso a una zona rossa produca un avviso. Esempio: Ecco un file fasullo example.c: #include int main () {char * zone = malloc (20) ; char * ptr = null; int i; char c; c = zona ; / * Errore: leggere un char * / c = zona nonitializzato ; / * Errore: leggi prima della zona * / zona = ''; / * ERRORE: scrivi dopo la zona * / * PTR = 2; / * Errore: utilizzare un puntatore NULL, deve produrre un nucleo * /} per compilare questo esempio con il controllo checker, è sufficiente utilizzare KeckergCC anziché GCC:% CheckergCC -O Esempio ESEMPIO.C Avanti, per eseguire l'esempio:% ./examplexecution produce Questi avvertimenti: DECKER 0.9 (SPARC-SUN-SOLARIIS2.5.1) Copyright (c) 1998 TRISTAN GINGOLD.Checker è un rilevatore di accesso ad accesso alla memoria.Checker è distribuito nella speranza che sarà utile, ma senza alcuna garanzia; Senza nemmeno la garanzia implicita di commerciabilità o idoneità per uno scopo particolare. Vedere la licenza pubblica Gngeneral per maggiori dettagli. Per ulteriori informazioni, impostare i checkereggi a `--Help'Dacker (PID: 04713):` ./example 'è in esecuzione (Sun Jan 1814:56:491998) Dalla correzione ( PID: 04713): (RUH) Leggi byte non inizializzato in un blocco. Quando la lettura di 1 byte (s) all'indirizzo 0x000398A1, all'interno del mucchio (sbk) .1 Byte in un blocco (inizio: 0x398a0, lunghezza: 20, MDESC: 0x0). Il blocco è stato assegnato da: PC = 0x00022F1C in CHKR_MALLOC su ../Stubs/stubs-malloc.c:51 PC = 0x0001339C in Main At ../example.c:7 PC = 0x000155F0 in Avvio. ./config/sparc/solaris2/startup.c:148 PC = 0x00013298 in * Sconosciuto * A * Sconosciuto *: I frame 0sstack sono: PC = 0x000133F4 in Main At ../example.c:12 PC = 0x000155F0 in Avvio. ./config/sparc/solaris2/startup.c:148 PC = 0x00013298 in * Sconosciuto * A * Sconosciuto *: 0Da Checker (PID: 04713): (BVH) Blocco limiti violazione nel mucchio. Quando si legge 1 byte All'indirizzo 0x0003989e, all'interno del mucchio (sbbk) .2 Byte prima di un blocco (inizio: 0x398a0, Durata: 20, MDESC: 0x0). Il blocco era Alloca TED da: PC = 0x00022F1C in CHKR_MALLOC su ../stubs/stubs-malloc.c:51 PC = 0x0001339C in Principale su ../example.c:7 PC = 0x000155F0 in Avvio su ../config/sparc/Solaris2/ STARTUP.C: 148 PC = 0x00013298 IN * Sconosciuto * A * Sconosciuto *: I frame 0sstack sono: PC = 0x00013434 in Main At ../example.c:13 PC = 0x000155F0 in Avvio su ../config/sparc/Solaris2/ STARTUP.C: 148 PC = 0x00013298 in * Sconosciuto * A * Sconosciuto *: 0Da Checker (PID: 04713): (BVH) Blocco dei limiti violazione nel mucchio. Quando si scrive 1 byte (s) all'indirizzo 0x000398b9, all'interno del mucchio ( SBRK) .5 Byte dopo un blocco (inizio: 0x398a0, lunghezza: 20, MDESC: 0x0). Il blocco è stato assegnato da: PC = 0x00022F1C in CHKR_MALLOC su ../stubs/stubs-malloc.c:51 PC = 0x0001339C in Principale su ../example.c:7 PC = 0x000155F0 in Avvio su ../config/sparc/solaris2/startup.c:148 PC = 0x00013298 in * sconosciuto * A * Sconosciuto *: 0STACK I frame sono: PC = 0x0001345C IN Principale su ../example.c:14 PC = 0x000155f0 in Startup su ../config/sparc/solaris2/startup.c:148 PC = 0x00013298 in * Sconosciuto * A * Sconosciuto *: 0Decker (PID: 04713): (NZA) NULL ZONA indirizzata. Quando scrivendo 1 byte (s) all'indirizzo 0x00000000, all'interno della zona nullo. Probabilmente deferenziato un puntatore null. Questo dovrebbe causare un errore di segmentazione. I telai di sequenza sono: PC = 0x0001347C In Principale AT ../example.c:15 PC = 0x000155F0 in Avvio presso ../config/sparc/solaris2/startup.c:148 Pc = 0x00013298 in * Sconosciuto * A * Sconosciuto *: 0DeCroms) (PID: 04713) : (sig) segnale.receive segnale 11 (Segv): (Azione predefinita: termina il nucleo). Guasto dell'esposizione


Controllore Software correlato