es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Valor incorrecto para una variable local en un minivolcado

Una de mis aplicaciones de C++ se bloqueó y obtuve un minivolcado. La aplicación se compiló en release con todo tipo de optimizaciones. El valor de “Características” cuando ejecuté !lmi en WinDbg es 2022 (no sé qué significa, lo siento). El minivolcado muestra que la parte del código que lanzó la excepción no controlada era algo como esto:

size_t idx = GetValue ();
someOtherVar = someVector [idx];

Estoy seguro de que someVector tiene al menos un elemento y al analizar el minivolcado con winDbg, dice que el valor de la variable local idx es 0x0. Además, la ejecución de dv / V en winDbg dice que idx se almacena en @r10.

Puedo encontrar una explicación para este bloqueo para valores de idx> 0, pero no si idx == 0. ¿Es posible que la variable idx haya sido optimizada y que el valor real utilizado para acceder a someVector sea mayor que 0?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible que la variable idx haya sido optimizada y el valor real utilizado para acceder a someVector sea mayor que 0. Las optimizaciones pueden conducir a comportamientos inesperados durante la depuración, y no es raro que las variables tengan valores diferentes en compilaciones optimizadas y no optimizadas.

    Para investigar más a fondo, puede intentar desactivar algunas de las configuraciones de optimización y volver a compilar su aplicación para ver si el problema persiste. También puede examinar el desmontaje del código para ver si hay alguna operación inesperada que se esté realizando en el valor de idx.

    En general, al depurar problemas relacionados con la optimización, es importante tener en cuenta que el código que se está ejecutando puede no siempre coincidir con el código fuente, y que ciertas operaciones de bajo nivel pueden realizarse de formas inesperadas. También puede ser útil consultar la documentación del compilador para ver si hay alguna configuración de optimización específica que pueda ser relevante para su código.

Comments are closed.