Inspector

puede ayudar a encontrar errores que las herramientas estándar no siempre pueden encontrar.
Descargar ahora

Inspector Clasificación y resumen

Anuncio publicitario

  • Rating:
  • Licencia:
  • GPL
  • Precio:
  • FREE
  • Nombre del editor:
  • Tristan Gingold
  • Sitio web del editor:
  • http://www.gnu.org/software/checker/

Inspector Etiquetas


Inspector Descripción

El corrector puede ayudar a encontrar errores que las herramientas estándar no siempre pueden encontrar. El corrector puede ayudar a encontrar errores que las herramientas estándar no siempre pueden encontrar. El mejor ejemplo es las fugas de la memoria. Una fuga de memoria es una zona de memoria, asignada con malloc que ya no se usa. Por lo tanto, la memoria asignada está perdida. Esto significa que el programa necesita más memoria y ejecuta más lento, ya que su sistema operativo puede tener que comenzar a intercambiar. Detecta accidentes de memoria incorrecta, tales como: leer la memoria no inicializada, escribiendo en una zona liberada, escribiendo o leyendo fuera de un bloque de memoria y usando punteros nulos. Esto es particularmente útil para los programas grandes con muchas funciones. Checker mantiene mapas de bits para realizar un seguimiento del estado de cada byte de la memoria. El estado puede ser grabable, legible, ambos o ninguno. Cuando se asigna la memoria, la nueva memoria se convierte en solamente: no se le permite leerlo porque no se ha inicializado. Pero cuando escribe a este nuevo bloque, esas bytes se vuelven legibles y se pueden grabar. Cuando el bloque es liberado, los bytes se vuelven ilegibles y sin escansar. Las zonas rojas son una memoria ilegible y sin escansar, de modo que cada acceso a una zona roja produce una advertencia. Ejemplo: Aquí hay un archivo falso ex ejemplo.c: #include int main () {char * zone = malloc (20) ; char * ptr = nulo; int i; char c; C = zona ; / * ERROR: Lea un char * / C = zona ; / * ERROR: LEA ANTES DE LA ZONA * / ZONA = ''; / * Error: escriba después de la zona * / * ptr = 2; Error: use un puntero nulo, debe producir un núcleo * /} para compilar este ejemplo con el corrector, simplemente use checkergcc en lugar de GCC:% checkergcc -o ejemplo example.c siguiente, para ejecutar el ejemplo:% ./exampleExecution produce Estas advertencias: Checker 0.9 (SPARC-SUN-Solaris2.5.1) Copyright (C) 1998 Tristan Gingold.Checker es un detector de acceso a la memoria. Se distribuye en la esperanza de que sea útil, pero sin ninguna garantía; Sin ni siquiera la garantía implícita de la gancha o la aptitud física para un propósito particular. Consulte la Licencia Pública Gnugeneral para obtener más detalles. Para obtener más información, configure los checkeropts a `--Help'De From Checker (PID: 04713):` ./example 'se está ejecutando (Sol ene 1814:56:491998) de Checker ( PID: 04713): (RUH) Lea un byte (s) no inicializado (s) en un bloque. Cuando lee 1 byte (s) en la dirección 0x000398A1, dentro del montón (SBRK) .1 Bytes en un bloque (inicio: 0x398A0, Longitud: 20, MDESC: 0x0). El bloque se asignó a partir de: PC = 0x00022F1C en CHKR_MALLOC en ../stubs/stubs-malloc.c:51 PC = 0x0001339C en Main en ../example.c:7 PC = 0x000155f0 en Startup en. ./config/sparc/solaris2/startup.c:148 PC = 0x00013298 en * Desconocido * AT * Desconocido *: 0stack Frames son: PC = 0x000133F4 en Main en ../example.c:12 PC = 0x000155f0 en Startup en. ./config/sparc/solaris2/startup.c:148 PC = 0x00013298 en * Desconocido * En * Desconocido *: 0 De en la dirección 0x0003989e, dentro del montón (SBRK) .2 Bytes Antes de un bloque (inicio: 0x398A0, Longitud: 20, MDESC: 0x0). El bloque era alobre TED de: PC = 0x00022F1C en CHKR_MALLOC en ../stubs/stubs-malloc.c:51 PC = 0x0001339c en Main en .../example.c:7 PC = 0x000155f0 en Startup en ../config/sparc/solaris2/ startup.c: 148 PC = 0x00013298 en * Desconocido * AT * Desconocido *: 0stack Frames son: PC = 0x00013434 en Main en ../example.c:13 PC = 0x000155f0 en Startup en ../config/sparc/solaris2/ startup.c: 148 PC = 0x00013298 en * Desconocido * AT * Desconocido *: 0 From Checker (PID: 04713): (BVH) Bloqueo Violación en el montón. Cuando escribe 1 byte (s) en la dirección 0x000398b9, dentro del montón ( SBRK) .5 BYTES Después de un bloque (inicio: 0x398A0, Longitud: 20, MDESC: 0x0). El bloque se asignó de: PC = 0x00022F1C en CHKR_MALLOC en ../stubs/stubs-malloc.c:51 PC = 0x0001339C en Principal en ../example.c:7 PC = 0x000155f0 en startup en ../config/sparc/solaris2/startup.c:148 PC = 0x00013298 en * Desconocido * AT * Desconocido *: MARCOS DE 0STACK son: PC = 0x0001345C en Principal en ../example.c:14 PC = 0x000155F0 en Startup en ../config/sparc/solaris2/startup.c:148 PC = 0x00013298 en * Desconocido * AT * Desconocido *: 0 From Checker (PID: 04713): (nza) Zona nula dirigida. Cuando escribe 1 byte (s) en la dirección 0x00000000, dentro de la zona nula. Probablemente diferencié un puntero nulo. Esto debe causar un fallo de segmentación. Los marcos de sellos son: PC = 0x0001347c En general en ../example.c:15 PC = 0x000155f0 en Startup en ../config/sparc/solaris2/startup.c:148 PC = 0x00013298 en * Desconocido * AT * Desconocido *: 04713) : (SIG) SEÑAL.RECEIVE SEÑAL 11 (SEGV): (Acción predeterminada: Terminate Core). Fallo de Sistema


Inspector Software relacionado