Excepción de primera oportunidad en...: Ubicación de lectura de infracción de acceso... al depurar con Visual Studio 2010

Me esfuerzo mucho por atrapar la violación de acceso al código heredado que sigue recibiendo:

First-chance exception at 0x57e77e1c in YouTubeLocal.exe: 0xC0000005: Access violation reading location 0x0000000c.

Mi pila se ve así:

    Qt5Guid.dll!57e77e1c()  
    [Frames below may be incorrect and/or missing, no symbols loaded for Qt5Guid.dll]   
    Qt5Guid.dll!57e75604()  
    Qt5Guid.dll!57ed520b()  
    Qt5Guid.dll!57dcf18b()  
>   msvcr100d.dll!_unlock(int locknum=0x00000004)  Line 375 C
    msvcr100d.dll!_heap_alloc_dbg_impl(unsigned int nSize=0x00000040, int nBlockUse=0x00000001, const char * szFileName=0x00000000, int nLine=0x00000000, int * errno_tmp=0x0015cb70)  Line 507 + 0x7 bytes C++
    msvcr100d.dll!_heap_alloc_dbg_impl(unsigned int nSize=0x00000040, int nBlockUse=0x00000001, const char * szFileName=0x00000000, int nLine=0x00000000, int * errno_tmp=0x0015cb70)  Line 504 + 0xc bytes C++
    msvcr100d.dll!_nh_malloc_dbg_impl(unsigned int nSize=0x00000040, int nhFlag=0x00000000, int nBlockUse=0x00000001, const char * szFileName=0x00000000, int nLine=0x00000000, int * errno_tmp=0x0015cb70)  Line 239 + 0x19 bytes  C++
    msvcr100d.dll!_nh_malloc_dbg(unsigned int nSize=0x00000002, int nhFlag=0x0015cbdc, int nBlockUse=0x0015cbc8, const char * szFileName=0x0015cbb0, int nLine=0x0015cbc8)  Line 302 + 0x1d bytes   C++
    Qt5Cored.dll!533b0628()     
    Qt5Cored.dll!53388046()     
    Qt5Cored.dll!5335f56b()     
    Qt5Cored.dll!535e74c4()     
    Qt5Cored.dll!536f7198()     
    Qt5Widgetsd.dll!53aa4aea()  
    kernel32.dll!778bc3d4()     
    msvcr100d.dll!_unlock(int locknum=0x00000004)  Line 375 C
    msvcr100d.dll!_free_dbg(void * pUserData=0x53a4b300, int nBlockUse=0x019757a0)  Line 1270 + 0x7 bytes   C++
    msvcr100d.dll!_free_dbg(void * pUserData=0x53a4b300, int nBlockUse=0x019757a0)  Line 1267 + 0xc bytes   C++
    01b4bd40()  
    kernel32.dll!778bc3d4()     
    msvcr100d.dll!_free_base(void * pBlock=0x0015d060)  Line 50 + 0x13 bytes    C
    018a4a84()  
    kernel32.dll!778bc3d4()     
    msvcr100d.dll!_free_base(void * pBlock=0x57c49736)  Line 50 + 0x13 bytes    C
    0015d140()  
    feeefeee()  

El depurador se detiene en este archivo (mlock.c)

/***
* _unlock - Release multi-thread lock
*
*Purpose:
*       Note that it is legal for a thread to aquire _EXIT_LOCK1
*       multiple times.
*
*Entry:
*       locknum = number of the lock to release
*
*Exit:
*
*Exceptions:
*
*******************************************************************************/

void __cdecl _unlock (
        int locknum
        )
{
        /*
         * leave the critical section.
         */
        LeaveCriticalSection( _locktable[locknum].lock );
}

No puedo encontrar la línea donde ocurre la violación de acceso. ¿Cómo puedo capturar la línea que está causando la excepción?

ACTUALIZACIÓN:
esta es la solución para mí: Verificador de aplicaciones de Microsoft

preguntado el 24 de febrero de 13 a las 09:02

¿Qué depurador estás usando? Desde el seguimiento de la pila, parece que está depurando un programa sin información de depuración, por lo que parece que no tiene la fuente del programa. Si eso es cierto, sería bastante imposible arreglar el error... -

Estoy usando Visual Studio 2010 Express IDE, tengo la fuente y realizo la depuración en modo de depuración, es mi fuente y las fuentes QT5:

Está en la parte inferior, feeefeee te dice que estás liberando memoria que ya fue liberada. -

si gracias , el problema es como encontrar el lugar ... no da ninguna pista ... -

1 Respuestas

Intente agregar alguna macro que establezca el puntero en NULL justo después de liberar la memoria. También intente agregar algunas afirmaciones o similares justo antes de usar dichos punteros. Con eso deberías poder localizar el error bastante rápido.

contestado el 10 de mayo de 13 a las 19:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.