El depuración es un proceso metódico de encontrar y reduciendo el número de los insectos o de defectos, en un programa de computadora o un pedazo del hardware electrónico que lo hace así comportarse según lo esperado. El depuración tiende a ser más duro cuando los varios subsistemas son el firmemente juntado, como cambios en uno puede hacer insectos emerger en otro.

Origen

Hay una cierta controversia sobre el origen del " del término; debugging." El " de los términos; bug" y " debugging" son ambos atribuidos popular a almirante Grace Hopper en los años 40 (véase, por ejemplo), solamente el " del término; bug" data por lo menos de 1878 y de Thomas Edison (véase el artículo del insecto de software para una discusión completa), y del " debugging" parece haber sido utilizado como término en aeronáutica antes de entrar en el mundo de computadoras.

La entrada del diccionario del inglés de Oxford para el " debug" cotiza el " del término; debugging" utilizado en el insecto de la referencia a la prueba del motor del aeroplano en un artículo 1945 en el diario de la sociedad aeronáutica real, sino de la tolva no fue encontrado hasta 1947 y el término no fue adoptado por los informáticos hasta los comienzos de los años 50. El artículo seminal de Gill en 1951 es la discusión profundizada más temprana de errores de programación, pero no utiliza el " del término; bug" o " debugging". En biblioteca digital de s de ACM el ', el " del término; debugging" primero se utiliza en tres papeles a partir de 1952 reuniones nacionales de ACM [http://portal. Dos del uso tres el término en comillas. Antes de 1963, " debugging" estaba un campo común bastante término que se mencionará en el paso sin la explicación en la página 1 del manual CTSS .

" del artículo de Peggy Aldrich Kidwell; Acecho de la computadora evasiva Bug" en IEEE los anales 1998 de la historia de la computación discuten la etimología del " bug" y " debug" minuciosamente.

Herramientas

El depuración es, generalmente una tarea incómoda y fastidiosa. La habilidad del depuración del programador es probablemente el factor más grande de la capacidad de eliminar errores de un problema, pero la dificultad del depuración del software varía grandemente con el lenguaje de programación usado y las herramientas disponibles, tales como depuraciones '. Las depuraciones son las herramientas de software que permiten al programador supervisar la ejecución de un programa, lo paran, lo recomienzan, lo funcionan en la cámara lenta, valores del cambio en memoria e incluso, vuelven en algunos casos a tiempo. El de la depuración del término puede también referir a la persona que está haciendo el depuración.

Generalmente, los lenguajes el de programación de alto nivel tal como Java, hacen el depuración más fácil, porque tienen características tales como dirección de excepción que hagan fuentes verdaderas de comportamiento errático más fáciles manchar. En lenguajes de programación de nivel inferior tales como C o montaje, insectos puede causar problemas silenciosos tales como corrupción de memoria, y es a menudo difícil ver donde sucedió el problema inicial; en esos casos, las herramientas de puesta a punto sofisticadas pueden ser necesarias.

En ciertas situaciones, las herramientas de software de fines generales que son específicas a una lengua en naturaleza pueden ser muy útiles. Éstos toman la forma de estático de las herramientas de análisis del código de . Estas herramientas buscan un sistema muy específico de los problemas sabidos, un cierto campo común y algún raro, dentro del código fuente. Todas tales ediciones detectadas por estas herramientas serían cogidas raramente por un recopilador o un intérprete, así no son inspectores de sintaxis, sino inspectores más semánticos. Algunas herramientas demandan poder detectar los problemas únicos 300+. Las herramientas comerciales y libres existen en varias idiomas. Estas herramientas pueden ser extremadamente útiles al comprobar árboles muy grandes de la fuente, donde está impráctico hacer recorridos del código. Un ejemplo típico de un problema detectado sería un dereference variable que ocurre antes de que la variable se asigne un valor. Otro ejemplo sería realizar el tipo fuerte que comprueba cuando la lengua no requiere tales. Así, son mejores en la localización de errores probables, contra errores reales. Consecuentemente, estas herramientas tienen una reputación de positivos falsos. El viejo programa del de la pelusa de Unix es un ejemplo temprano.

Para el hardware electrónico del depuración (e., hardware ) así como software bajo (e., los bíos, los drivers de dispositivo y los soportes lógico inalterable, los instrumentos tales como analizadores de lógica de los osciloscopios o los emuladores in-circuit (ICEs) son de uso frecuente, solamente o en la combinación. Un HIELO puede realizar muchas de las tareas de la depuración típica del software en el software bajo y los soportes lógico inalterable . ¡

Pasos básicos

Aunque cada experiencia del depuración sea única, ciertos principios generales se pueden aplicar en el depuración. Esta sección trata particularmente software del depuración, aunque muchos de estos principios se puedan también aplicar al hardware del depuración.

Los pasos básicos en el depuración son:

reconoce que existe un insecto
Aislar la fuente del insecto
Identificar la causa del insecto
Determinar un arreglo para el insecto
Aplicar el arreglo y probarlo

Reconocer un insecto existe

La detección de insectos se puede hacer dinámico o pasivo.

Un programador experimentado sabe a menudo donde están más probables los errores ocurrir, de acuerdo con la complejidad de las secciones de la corrupción de datos del programa tan bién como posible. Por ejemplo, cualquier dato obtenido de un usuario se debe tratar sospechoso. El gran cuidado se debe tomar para verificar que el formato y el contenido de los datos están correctos. Los datos obtenidos de transmisiones se deben comprobar para cerciorarse de que el mensaje entero (datos) fue recibido. Datos complejos que deben ser analizados y/o procesado puede contener combinaciones inesperadas de valores que no fueron anticipados, y no dirigido correctamente. Insertando comprueba para saber si hay síntomas de error probables, el programa puede detectar cuando los datos se han corrompido o no se han manejado correctamente.

Si un error es bastante severo hacer el programa terminar anormalmente, la existencia de un insecto llega a ser obvia. Si el programa detecta un menos problema grave, el insecto puede ser reconocido, error proporcionado y/o se supervisan los mensajes de registro. Sin embargo, si el error es de menor importancia y causa solamente los resultados incorrectos, llega a ser mucho más difícil detectar que existe un insecto; esto es especialmente verdad si es difícil o imposible verificar los resultados del programa.

La meta de este paso es identificar los síntomas del insecto. La observación de los síntomas del problema, debajo de qué condiciones se detecta el problema, y de qué work-arounds, eventualmente, se han encontrado, ayudará grandemente a los pasos restantes a eliminar errores el problema.

Fuente del aislante de insecto

Este paso es a menudo (y por lo tanto recompensando) el paso más difícil del depuración. La idea es identificar qué porción del sistema está causando el error. Desafortunadamente, la fuente del problema no es siempre igual que la fuente de los síntomas. Por ejemplo, si se corrompe un expediente de entrada, un error puede no ocurrir hasta que el programa esté procesando un diverso expediente, o realizando una cierta acción basada en la información errónea, que podría suceder de largo después de que el expediente fuera leído.

Este paso implica a menudo la prueba iterativa. El programador pudo primero verificar que la entrada esté correcta, siguiente si fue leído correctamente, procesado correctamente, etc. Para los sistemas modulares, este paso puede ser un poco más fácil comprobando la validez de los datos pasajeros a través de interfaces entre diversos módulos. Si la entrada estaba correcta, pero no era la salida, después la fuente del error está dentro del módulo. Iterativo probando entradas y salidas, la depuración puede identificar dentro de algunas líneas de código donde está ocurriendo el error.

Las depuraciones expertas pueden a menudo presumir donde el problema pudo estar (basado en analogías a las situaciones similares anteriores), y prueban las entradas y las salidas de las áreas sospechosas del programa. Esta forma de depuración es un caso del método científico . Las depuraciones menos expertas caminan a menudo secuencialmente con el programa, buscando un lugar donde está diferente el comportamiento del programa de ése esperado. Observar que ésta sigue siendo una forma de método científico como el programador debe decidir qué variables a examinar al buscar comportamiento inusual. Otro acercamiento es utilizar un " " de la búsqueda binaria ; tipo de proceso del aislamiento. Probando secciones cerca del centro del flujo de los datos/de proceso, el programador puede determinar si el error sucede durante secciones anteriores o posteriores del programa. Si no se detecta ningunos problemas de los datos, después el error es probablemente más adelante en el proceso.

Identificar la causa del insecto

Encontrando la localización del insecto, el paso siguiente es determinar la causa real del insecto, que pudo implicar otras secciones del programa. Por ejemplo, si se ha determinado que el programa critica porque un campo es incorrecto, el paso siguiente es identificar porqué el campo es incorrecto. Ésta es la fuente real del insecto, aunque algo sostuviera que la inhabilidad de un programa de manejar malos datos se puede considerar un insecto también.

Una buena comprensión del sistema es vital con éxito a identificar la fuente del insecto. Una depuración entrenada puede aislar donde un problema origina, pero solamente alguien familiar con el sistema puede identificar exactamente la causa real detrás del error. Puede ser que sea en algunos casos externo al sistema: los datos de entrada eran incorrectos. En otros casos puede ser que sean debido a un error de lógica, donde los datos correctos fueron manejados incorrectamente. Otras posibilidades incluyen valores inesperados, donde estaban las asunciones iniciales que un campo dado puede tener solamente " n" valores, cuando de hecho, puede tener más, tan bien como combinaciones inesperadas de valores en diversos campos (el campo x fue supuesto solamente para tener ese valor cuando el campo y era algo diferente). Otra posibilidad es datos de referencia incorrectos, tales como una tabla de operaciones de búsqueda que contiene valores incorrectos concerniente al expediente que fue corrompido.

Determinando la causa del insecto, es una buena idea examinar las secciones similares del código para ver si el mismo error se repite a otra parte. Si el error era claramente un error tipográfico, esto es menos probable, pero si el programador original entendía mal el diseño y/o los requisitos iniciales, el mismo o las equivocaciones similares se habría podido incurrir en a otra parte.

Determinar el arreglo para el insecto

Identificando la fuente del problema, la tarea siguiente es determinar cómo el problema puede ser fijo. Un conocimiento íntimo del sistema existente es esencial para todos pero el más simple de problemas. Esto es porque el arreglo modificará el comportamiento existente del sistema, que puede producir resultados inesperados. Además, la fijación de un insecto existente puede o crear a menudo insectos adicionales, o exponer otros insectos que estaban ya presentes en el programa, pero nunca expuesto debido a el insecto original. Estos problemas son causados a menudo por el programa que ejecuta una rama previamente no comprobada del código, o bajo condiciones previamente no comprobadas.

En algunos casos, un arreglo es simple y obvio. Esto es especialmente verdad para los errores de lógica donde el diseño original fue ejecutado incorrectamente. Por una parte, si el problema destapa un defecto de diseño importante que impregne una porción grande del sistema, después el arreglo pudo extenderse de difícil a imposible, requiriendo una reescritura del total del uso.

En algunos casos, puede ser que sea deseable ejecutar un " fix" rápido;, seguido por un arreglo más permanente. Esta decisión es tomada a menudo considerando la severidad, la visibilidad, la frecuencia, y los efectos secundarios del problema, así como la naturaleza del arreglo, y de los horario del producto (e., hay más problemas acuciantes?).

Arreglo y prueba

Después de que se haya aplicado el arreglo, es importante probar el sistema y determinar que el arreglo maneja el problema anterior correctamente. La prueba se debe hacer para dos propósitos: (1) hace el arreglo ahora maneja el problema original correctamente, y (2) se cerciora de que el arreglo no haya creado ninguna efectos secundaria indeseable.

Para los sistemas grandes, es una buena idea tener pruebas, una serie de la regresión de ejecuciones de prueba que ejerciten el sistema. Después de que sea significativo los cambios y/o los arreglos de insecto, estas pruebas se puedan repetir en cualquier momento para verificar que el sistema todavía ejecuta según lo esperado. Mientras que se agregan las nuevas características, las pruebas adicionales se pueden incluir en la habitación de prueba.

Pasos a reducir el eliminar errores

Hay las medidas concretas que se pueden tomar para reducir la cantidad de software pasado de la eliminación de errores del tiempo. Éstos se enumeran en las secciones abajo.

El modo de pensar correcto

Probablemente la cosa más importante que usted puede hacer cuando usted está comenzando a eliminar errores de un programa debe realizar que usted no entiende qué se está encendiendo. Los programadores se convencen que de que su programa debe trabajar muy bien son menos probables encontrar errores simplemente porque están rechazando admitir su confusión. Si el programa se comportara la manera que usted piensa que lo hace, usted no estaría eliminando errores; el programa estaría trabajando muy bien. Incluso cuando el programa aparece trabajar, si usted lo examina con el pensamiento que hay por lo menos un insecto que permanece y usted va a encontrarlo, después usted es más probable encontrar algo mal con el programa.

Comenzar en la fuente

El tiempo cuando usted es el más consciente de donde están más probables los problemas presentarse está generalmente al primero diseñar y escribiendo el código. Insertando la integridad comprueba en los varios lugares dentro del programa, los problemas se pueden detectar y divulgar por el programa sí mismo. Además de detectar problemas, las consideraciones se deben dar como mejor manejar cada error. Las opciones incluyen:
Divulgar el error, fijar los campos inválidos a un valor prefijado, y continuar
Divulgar el error, desechar el expediente asociado al valor inválido, y continuar
Divulgar el error, expediente inválido de la transferencia en archivo separado/la tabla así que el usuario puede examinar y corregir posiblemente el problema
Divulgar el error y terminar el programa

El considera : Aserción (computación)

El usuario del convite entró con la suspicacia

Cualquier dato que originara de usuarios (sistemas externos incluyendo) se debe tratar con la suspicacia. Validar cuidadosamente todos tales datos de entrada, realizando cheques sintácticos y semánticos de la integridad. Tales datos inválidos son una fuente común de errores de programación. Pensar no apenas en los datos incorporados en error, pero los datos malévolos también, como en hazañas del desbordamiento del almacenador intermediario.

Si los datos son incorporados recíprocamente por los usuarios, usted puede proporcionar los mensajes de error apropiados y permitir que el usuario corrija los campos inválidos. Si los datos no son de una fuente interactiva, después los expedientes erróneos se deben manejar como se describe anteriormente.

Uso de los ficheros de diario

Se encuentran los programas que escriben la información a los ficheros de diario pueden proporcionar la información significativa que se puede utilizar para analizar antes de qué iba encendido, durante, y después de problemas. El número de entradas que se buscarán puede ser reducido creando varios ficheros de diario, tales como un registro separado para cada componente importante del sistema, más un fichero de diario terminantemente para los errores. Cada entrada debe ser fecha/con impresión horaria para poder correlacionar entradas de diversos registros.

Habitaciones de prueba

Un sistema estándar de las pruebas que se pueden funcionar con para realizar las pruebas puede asistir a encontrar errores antes de que las hagan en la producción. Estos casos de prueba se deben automatizar tanto cuanto sea posible para reducir la cantidad de esfuerzo requerida para realizar estas pruebas. Mientras que las nuevas características se agregan al sistema, las pruebas adicionales se deben crear para ejercitar esas características.

Cambiar una cosa a la vez

Al realizar muchos cambios, aplicarlos incremental. Agregar un cambio, y después probar ese cambio a fondo antes de comenzar en el cambio siguiente. Esto reducirá el número de fuentes posibles de nuevos insectos. Si varios diversos cambios se aplican al mismo tiempo, después es mucho más difícil identificar la fuente del problema. Además, los errores de menor importancia en diversas áreas pueden obrar recíprocamente para producir los errores que nunca habrían sucedido si esos cambios habían sido aplicados uno a la vez.

Se retiran los cambios que no tienen ningún efecto

Si usted realiza un cambio para fijar un problema, pero el programa todavía se comporta iguales, se retiran esos cambios antes de proceder. El hecho de que sus cambios no hicieran cualquier cosa indica una de varias cosas:
El problema no es donde usted piensa que es
El área que usted se modificó o no se está llamando, o no se está llamando la manera usted piensa que es
Si se asume que la sección que usted cambió no fue ejecutado, usted pudo haber introducido los nuevos insectos que no aparecerán hasta que usted fije el insecto actual

Intentar otro puerto de su uso

Los programas, de que están disponibles bajo diversas arquitecturas (e. sistemas de la operación como MS Windows, MacOSX, linux o Los procesadores tienen gusto de Intel Pentium, PowerPC o la alfa de la DEC) reacciona a veces diferentemente en otros sistemas (especialmente para los errores subsecuentes). Es a veces lejos más fácil encontrar el error en una diversa arquitectura.

Pensar en situaciones similares

Cuando se ha encontrado un insecto, pensar en otros lugares donde la misma equivocación pudo haber sido incurrida en. Comprobar esos lugares y ver si existe el mismo problema allí también.

Ver también

Desplome (computación)
Depuración
Error-correction
Punto de desempate
Reloj (programación de computadora)
Depuración de la memoria
Número mágico (programación) (" de la sección; La magia elimina errores del values")
Programación de computadora
Prueba del software
Framepointer
Depuración del delta
Depuración alejado

.

  • Zenithic
  • Ercole Procaccini
    Random links:Nuez dura, Oklahoma | Hiles, condado del bosque, Wisconsin | Academia de Lubrański | Méditerranée | Travesura blanca

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">