Mi programa usa una biblioteca de tercera parte que arroja un fallo de segmentación en algún momento. Traté de compilar la biblioteca con símbolos de depuración y sin optimización del compilador, y el fallo desapareció. Mi sospecha es que las optimizaciones del compilador revelaron este error. ¿Cuáles son las mejores prácticas para depurar casos como este?¿Cuáles son las mejores prácticas para encontrar un error en un programa C que solo aparece en la compilación optimizada
EDITAR - (corregido la declaración anterior: "revelado" en lugar de "causado")
Creo que fue mal interpretado. No tenía la intención de culpar al compilador, o algo así. Solo pedí mejores prácticas para encontrar un error en una situación así, en la que no tengo símbolos de depuración en la biblioteca de terceros (la cola inversa conduce a la biblioteca de terceros).
Mala suposición: generalmente> 99% del tiempo el problema será un error latente en el código que solo aparece cuando la optimización está habilitada. Los errores del compilador son relativamente raros en comparación con los errores en el código de usuario. –
¿Por qué crees específicamente que esto es optimización del compilador? Un error de puntero flotante u otro problema de acceso a la memoria, por ejemplo, es probable que se manifieste de maneras muy diferentes cuando cambie los indicadores que usa para compilar/vincular el programa. –
El error es ** NO ** en la biblioteca de terceros. Si hago un programa y falla cuando 'printf', mi primer pensamiento no es que' printf' tenga un error. – pmg