La tecnología de depuración de software incluye

La tecnología de depuración de software incluye:

1. Análisis y razonamiento;

Los diseñadores y desarrolladores analizan, razonan y depuran el software en función de la información de defectos del software.

Reduzca el alcance del posicionamiento de arriba a abajo según la arquitectura del programa de software y determine los componentes de software que pueden causar problemas.

Localiza problemas de software según las funciones del software y el tiempo de ejecución del software.

Basado en el principio del algoritmo, se analizó y determinó la causa raíz del problema del defecto.

2. Analogía inductiva;

La inducción es un método de pensamiento sistemático derivado de un razonamiento especial. La idea básica de la depuración inductiva es comenzar con algunas pistas (síntomas de error) y encontrar el error analizando la relación entre ellas. Este método maneja principalmente el trabajo de depuración en función de la experiencia laboral y los casos acumulados.

Realizar trabajos de depuración basados ​​en la experiencia laboral y la forma de abordar problemas similares en el diseño de programas.

Consulte a los departamentos pertinentes y al personal experimentado.

Busca literatura y casos relevantes que proporcionen ideas y métodos para resolver problemas. Durante el proceso de desarrollo de software, generalmente se rastrea y gestiona cada problema de defecto, y las soluciones y procesos para resolver el problema se registran en detalle.

Recopile información incorrecta, enumere datos, incluida la entrada, la salida, la inducción, descubra patrones, divida a partir de pistas y encuentre conexiones entre pistas. Es decir: de lo especial a lo general.

3. Seguimiento hacia atrás;

Un método de depuración eficaz comúnmente utilizado en programas pequeños. Una vez que se descubre un error, las personas primero analizan los síntomas del error y determinan quién lo descubrió por primera vez. la ubicación del "síntoma" y luego rastrea manualmente el código fuente a lo largo del flujo de control del programa hasta que se encuentra la fuente del error o se determina el alcance del error.

Por ejemplo, si el error encontrado en el programa es una declaración de impresión, los valores de las variables del programa se pueden inferir a partir de los valores de salida. A partir de este punto, podemos rastrear el proceso de ejecución del programa y pensar repetidamente: "Si el estado del programa en este punto (el valor de la variable) es así, entonces el estado del programa en el punto anterior debe ser así". ser así..." hasta que se descubra un error. .

El desarrollo de software suele utilizar la gestión de versiones y líneas base. Baseline proporciona una base de desarrollo unificada para el desarrollo del código del programa. El establecimiento de una línea base ayuda a distinguir problemas en cada etapa y localizar defectos. Las versiones de software generan un árbol de versiones durante el proceso de desarrollo del producto de software. Un producto de software es en realidad una determinada versión de software y el desarrollo de nuevos productos suele basarse en una determinada versión de software.

Si se descubre un problema durante el proceso de desarrollo, puede volver a la versión estable en el árbol de versiones para encontrar la causa raíz del problema.

A través de la secuencia de la versión base, se pueden rastrear varios problemas del producto, se pueden restablecer configuraciones basadas en una determinada versión, se pueden reproducir defectos de software y varios problemas en el proceso de desarrollo de software, y la Se puede localizar y encontrar la causa raíz del problema.

4. Depuración incremental;

La mayor parte del desarrollo de software utiliza gestión de configuración de software y tecnología de integración continua. Los desarrolladores envían código de evaluación al repositorio diariamente. Los integradores continuos completan el trabajo de construcción de integración.

Al controlar la granularidad de la integración continua (intervalo de tiempo de compilación), puede controlar la cantidad de código de programa que los desarrolladores envían al repositorio, lo que facilita la localización de defectos.

El trabajo de integración continuo suele realizarse todas las noches. Cuando se descubre un problema, los desarrolladores solo necesitan depurar y procesar el código escrito ese día.

5. Escriba el código más corto que pueda reproducir el problema;

Utilice tecnología de instrumentación y división de programas para escribir el módulo de software de depuración de código más corto que pueda reproducir el problema.

Corte del programa El corte del programa consiste en reducir el programa a la forma más pequeña eliminando todas las declaraciones en posiciones específicas que no afectan el cálculo de la expresión y aún así producen el comportamiento dado.

Utilizando la tecnología de corte, un módulo de software grande y complejo se puede convertir en múltiples programas de corte. Estas segmentaciones son más simples que los programas originales y más fáciles de depurar y probar.

El método de instrumentación del programa consiste en insertar algunas declaraciones o segmentos de programa en el programa bajo prueba para obtener información diversa. A través de esta información, podemos comprender mejor algunas características dinámicas del programa durante la ejecución.

La depuración y prueba independientes de un componente de software requiere el uso de tecnología de instrumentación, y la llamada o ejecución del componente requiere módulos auxiliares. Durante la depuración de módulos de software, la división del programa y la instrumentación del programa se pueden utilizar juntas.

6. Tecnología de seguimiento de registros;

El registro es un mecanismo de registro. Los archivos de registro registran información útil a medida que los módulos de software se integran y construyen continuamente. Si la compilación falla, envíe la información al personal relevante para la depuración del software viendo el archivo de registro.

7. Depuración y prueba de tecnología;

Desarrollo basado en pruebas.

El desarrollo basado en pruebas es un método de desarrollo diferente al proceso de desarrollo de software tradicional. Antes de escribir un código funcional, primero escriba el código de prueba y luego escriba el código funcional que pase la prueba. Esto ayudará a escribir un código conciso, utilizable y de alta calidad.

Integración de desarrollo y pruebas.

Además del código de programación y las pruebas de caja blanca, los desarrolladores de programas también deben completar el diseño y la implementación de pruebas funcionales básicas. Esto ayudará a los desarrolladores de programas a realizar un mejor trabajo de depuración.

Los desarrolladores de programas pueden resolver problemas de psicología de pruebas (que no pueden probar ellos mismos) mediante pruebas cruzadas. Con este modelo, se reducirá la cantidad de probadores y los probadores profesionales realizarán otros trabajos de prueba complejos.

Muchos defectos de bajo nivel en RD se descubrirán lo antes posible en el proceso de desarrollo, lo que reducirá el costo de descubrir defectos más adelante.

8. Depuración forzada;

Este método de depuración se usa comúnmente actualmente y es menos eficiente. No hay necesidad de pensar demasiado, salva tu cerebro. Por ejemplo:

Depurar imprimiendo toda la memoria y encontrar la ubicación de los errores en esta gran cantidad de datos.

Establezca declaraciones de impresión en ubicaciones específicas del programa, inserte declaraciones de impresión en cambios de variables clave, ubicaciones de sucursales importantes y ubicaciones de llamadas de subrutinas del programa fuente que causó el error, realice un seguimiento de la ejecución del programa y monitorear cambios en variables importantes.

Llame automáticamente a herramientas y utilice las funciones de depuración de algunos lenguajes de programación o herramientas de depuración interactivas especializadas para analizar el proceso dinámico del programa sin modificar el programa.

Antes de aplicar cualquiera de los métodos anteriores, debemos realizar un análisis exhaustivo y exhaustivo de los síntomas del error, hacer conjeturas sobre la ubicación y la naturaleza del error y luego utilizar métodos de depuración adecuados para verificar la exactitud de las conjeturas.

9. Depuración deductiva;

El método deductivo es un método de pensamiento que parte de principios o premisas generales y deduce conclusiones mediante el proceso de eliminación y esencia. La depuración deductiva significa que los evaluadores primero enumeran todos los errores posibles como hipótesis basadas en casos de prueba existentes, luego usan datos de prueba originales o nuevas pruebas para eliminar las hipótesis imposibles una por una, y finalmente usan datos de prueba para verificar el resto. La razón por la cual la suposición es realmente equivocado.

Enumere todas las posibles causas de error y utilice una tabla para enumerar todas las posibles causas de error. A través de ellos podemos organizar y analizar los datos existentes.

Utilice datos de prueba existentes para eliminar suposiciones incorrectas.

Analice cuidadosamente los datos existentes, busque inconsistencias e intente descartar todas las causas enumeradas en el paso anterior. Si se descartan todas las causas, es necesario agregar algunos datos (casos de prueba) para establecer nuevas hipótesis.

Mejorar los supuestos restantes;

Utilizar pistas conocidas para mejorar aún más los supuestos restantes y hacerlos más específicos, a fin de determinar con precisión la ubicación del error;

Prueba Los restantes supuestos.

Datos ampliados:

Contenido de tecnología de depuración de software:

Soporte de depuración de CPU, incluidas excepciones, puntos de interrupción, ejecución en un solo paso, supervisión de ramas, JTAG, MCE y otros. Alabama.

Las herramientas de depuración en el sistema operativo Windows incluyen motor de depuración del kernel, sistema de depuración en modo usuario, verificador, Dr. Watson, WER, ETW, volcado de memoria, WHEA, etc.

Soporte de depuración para el compilador Visual C/c, incluida la comprobación en tiempo de compilación, la comprobación en tiempo de ejecución y los símbolos de depuración.

El historial de desarrollo, la estructura del módulo, el modo de trabajo, el uso, los detalles de implementación de las principales funciones de depuración y los ejemplos de aplicaciones a lo largo del libro del depurador WinDBG.

Los principios, la implementación y el uso de la depuración del kernel, la depuración en modo de usuario, la depuración JIT y la depuración remota. El concepto de excepciones, métodos de distribución, métodos de manejo (SEH, VEH, CppEH), excepciones no controladas y la forma en que el compilador compila el código de manejo de excepciones.

El rol, el proceso de generación, el formato de almacenamiento y el uso de símbolos de depuración. El diseño estructural, los principios de funcionamiento y los problemas de software relacionados de la pila y el montón, incluido el crecimiento automático, el desbordamiento y la desaceleración de la pila; desbordamiento intermedio, ataque de desbordamiento, pérdida de memoria, falla del montón, etc.

-Depuración de software