Sigo teniendo una falla de segmentación. Que esta pasando?

Hay muchas razones por las que un sistema informático generará una falla de segmentación. Técnicamente, una falla de segmentación ocurre cuando el software intenta leer o escribir memoria a la que no tiene acceso o que se encuentra en una ubicación que no existe. En la práctica, esto podría suceder porque una pieza de hardware se ha estropeado, o una pieza de software contiene un error, o el software se ha dañado de alguna manera. Tales problemas pueden ocurrir por varias razones posibles.

Si sabe que tiene una falla de segmentación, eso es solo el comienzo de tratar de descubrir qué es lo que realmente salió mal en su computadora. Piense en ello como una bandera roja que le dice que algo está roto, pero no le dice qué es eso.

Existen muchas herramientas y técnicas de diagnóstico para ayudar a diagnosticar fallas de segmentación. Es toda una industria. El primer paso es poder reproducir la falla de segmentación bajo demanda. Si puede definir una serie de pasos claros que siempre causarán la falla de segmentación, entonces está en el camino correcto para diagnosticarlo. Además, si le pide ayuda a alguien, lo primero que le preguntará (después de “¿está conectada la computadora?”) Será: “¿puede reproducir el problema?”

Si el problema solo ocurre esporádicamente y no es reproducible a pedido, eso hace que sea más difícil de diagnosticar, pero también nos da información que podemos usar. En ese caso, cada vez que experimente la falla de segmentación, escriba exactamente lo que estaba haciendo en la computadora, inmediatamente antes de que ocurriera la falla. De esta manera, quien te ayude podrá descartar ciertas cosas.

Para diagnosticar una falla de segmentación por su cuenta, debe comprender cómo una computadora pasa del punto A al punto Z en su funcionamiento, y cómo identificar todos los puntos intermedios. Sabes que algo se está rompiendo, en alguna parte . El truco es identificar el último punto donde las cosas funcionaban correctamente y el primer punto donde las cosas salieron mal. Esto reducirá el problema a algo muy pequeño, y en ese punto, con suerte, podrá identificar el problema simplemente mirando esa pequeña cosa.

Por ejemplo, suponga que obtiene la falla de segmentación tan pronto como ejecuta un software en particular, llamado ‘a.out’. Si siempre sucede cuando ejecuta ‘a.out’, puede reproducir el problema a pedido. Eso ya es un logro. Puede estar razonablemente seguro de que el error de segmentación está ocurriendo porque ‘a.out’ está intentando acceder a la memoria de manera incorrecta.

Puede intentar confirmar el problema evitando usar ‘a.out’ y ver si todavía tiene un error de segmentación. Si no lo hace, eso es evidencia adicional de que el problema está dentro de ‘a.out’.

Pero suponga que el problema solo ocurre a veces cuando invoca ‘a.out’, y a veces con ‘b.out’, y a veces no. En este caso, aún no sabe cómo reproducir el problema a pedido. Cuando eso suceda, debe considerar todo lo que está sucediendo en la computadora en los momentos en que se produce la falla de segmentación y en los momentos en que no.

Cuando recibes la falla de segmentación, ¿hay muchos otros programas ejecutándose al mismo tiempo? ¿Hay mucha actividad de redes pesadas? ¿Estás viendo un video? ¿Tu rodilla empuja el cable de alimentación? Intenta identificar todo lo que está sucediendo. Cualquiera de ellos podría ser la razón de la falla de segmentación.

Podría ser, por ejemplo, que ‘a.out’ o ‘b.out’ desencadenen la falla de segmentación, pero solo si el sistema está muy cargado por otros procesos. Cuando la computadora no está haciendo mucho otro trabajo, ‘a.out’ y ‘b.out’ funcionan bien. En ese caso, aunque todavía no puede reproducir el problema a pedido, sí tiene más información que puede ayudarlo a diagnosticar el problema. Un sistema bajo carga pesada es uno que está utilizando muchos más recursos. Si alguna porción de RAM se ha estropeado, entonces es más probable que un sistema con mucha carga acceda a esa porción que a una con poca carga. Y hay muchas otras posibilidades a considerar también. Este es solo el comienzo del diagnóstico.

En última instancia, usted o la persona que lo ayuda debe reducir las cosas que podrían ser responsables de la falla de segmentación. A veces, esto implica reemplazar las tarjetas de memoria o CPU, para ver si eso tiene algún efecto sobre el problema. El proceso de depuración puede llevar a cualquier parte, incluso a un mal fanático.

Para desarrollar sus habilidades para depurar fallas de segmentación, aprenda a desarmar y armar una computadora. Aprenda a recorrer el software utilizando GDB y otras herramientas. Conozca los diversos software de diagnóstico disponibles para su sistema operativo particular. Existen herramientas que le permiten observar el comportamiento de cada aspecto de su sistema y ver cuándo y dónde las cosas comienzan a comportarse de manera inesperada. En última instancia, el origen de cualquier falla de segmentación dada se encuentra en algún lugar , y siempre es posible averiguar dónde está. Recuerde que las personas que diseñan el hardware y el software en su sistema tienen que depurar su propio trabajo y asegurarse de que está bien enviarlo. Dependen de las mismas herramientas para hacerlo. Puede estar seguro de que siempre hay una herramienta o una técnica para llevarlo exactamente a donde necesita ir.