2012-07-20 32 views
5

He encontrado un error interesante (algo molesto) al usar Visual Studio para depurar un proyecto mixto nativo WPF/CLR/CMA no administrado, este error ocurre solo en Windows XP. Parece que tengo una corrupción de memoria dentro del programa, cuyo alcance es demasiado grande para publicar aquí. El problema que estoy teniendo es que cuando ocurre el bloqueo en el programa, simplemente se cierra sin que el depurador VS intente localizar una excepción, supongo que porque no se lanzó ninguna. El código de salida del programa es realmente la única información que tengo que seguir, y es solo el valor int mínimo.Programa ha salido con el código -2147483645

¿Alguien ha encontrado esto y podría orientarme en la dirección correcta en cuanto a lo que significa?

EDIT:

Continuando para investigar el problema, he descubierto que a veces puedo conseguir un seguimiento de la pila y una excepción en lugar de una salida del programa recta. La traza me lleva a una asignación vectorial (push). En el escenario donde el programa acaba de salir, esta sigue siendo la última línea ejecutada. Supongo que tengo memoria corrupta en alguna parte, aunque esperaba que el hecho de que esto normalmente se manifiesta como un volcado de programas y no una excepción podría ayudarme a orientarme en la dirección correcta.

+0

hay una declaración de exit() o un lanzamiento de una descturcor que he visto como causa del comportamiento indicado. – rerun

+5

el código de salida puede tener más sentido interpretarse como HRESULT ==> 0x80000003 – jglouie

+0

@rerun podría estar en algo con un lanzamiento de un destructor, lo investigaré. – jimmyjambles

Respuesta

6
// 
// MessageId: STATUS_BREAKPOINT 
// 
// MessageText: 
// 
// {EXCEPTION} 
// Breakpoint 
// A breakpoint has been reached. 
// 
#define STATUS_BREAKPOINT    ((NTSTATUS)0x80000003L) 

El programa aterrizó en una instrucción INT3 y desencadenó un punto de interrupción. Pero no hay depurador presente por lo que termina el programa. Podría ser un __debugbreak suelto() que dejó en su código, podría ser desencadenado por un salto salvaje cuando el estado del programa se corrompió.

Deberá depurarlo. Si no puede reproducir fácilmente en su máquina de desarrollo, necesitará un minivolcado de la máquina que falla.

+0

Gracias por su respuesta, llegué a instalar Visual Studio en una máquina virtual con Windows XP. Re-compilado y ejecutado localmente con un depurador presente, el programa aún acaba de salir. La última línea que se llama es una asignación. – jimmyjambles

+0

No lo sé, ese no es el comportamiento típico de XP. Suena como corrupción de montón, por supuesto. Depurar + Excepciones, marque las casillas lanzadas. –

+1

estaba accediendo a un byte pasado una matriz superior encuadernada, supongo que lo que a través de mí fue la falta de algo lanzado. Gracias de nuevo – jimmyjambles

Cuestiones relacionadas