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.
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.
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 alguÌ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 . ¡
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
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.
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.
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.
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?).
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.
El considera : Aserción (computación)
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.
.
| Random links: | Nuez dura, Oklahoma | Hiles, condado del bosque, Wisconsin | Academia de Lubrański | Méditerranée | Travesura blanca |