2010-10-22 32 views

Respuesta

5

Significa que el depurador no puede determinar su valor.

Por ejemplo, verá esto bastante si su código implica HWND s. Si se mira a través de los archivos de encabezado de Windows, se define como esto a través de una macro:

struct HWND__{int unused;}; typedef struct HWND__ *HWND; 

lo tanto, el tipo de HWND es realmente el "puntero a un HWND__" tipo. Sin embargo, los valores HWND que obtiene de funciones como CreateWindow() no son en realidad indicadores de nada.

Pero el depurador tratará de averiguar el valor del miembro unused en la estructura, pero no puede hacerlo:

Watch Window

También verá este tipo de errores cuando la variable visto tiene información incorrecta o faltante.

+0

No es cierto. Los ??? la cadena de error está relacionada con la información de tipo incorrecto. Si no puede evaluar la expresión, proporcionará un mensaje de error más útil. – JaredPar

+0

@JaredPar: Mi redacción es un poco inactiva. Lo que quise decir es que el depurador no puede entender su valor. –

+0

Gotcha. La versión editada aclaraba la confusión. Pero sí muestra el ??? para tipos malos y malos valores. – JaredPar

1

¿Es este un proyecto de estilo C++?

El depurador normalmente utiliza el "???" cadena cuando es capaz de evaluar una expresión pero no puede obtener ningún tipo de información para una parte específica de la pantalla. Esto ocurre típicamente debido a símbolos PDB faltantes o incorrectos.

Es probable que esto suceda si la expresión accede a datos dañados (tablas virtuales anuladas o RTTI). Pero no sé 100% si eso es cierto.

1

Normalmente significa que el puntero o la referencia apuntan a la memoria inaccesible, y por lo tanto no puede obtener el valor para presentar. Por ejemplo, si tiene un puntero que se supone que apunta a un Foo, el depurador normalmente interpretará los bits que apunta el puntero como Foo, independientemente de si el puntero es válido o no. Pero en algunos casos, un puntero salvaje podría apuntar a una ubicación que ni siquiera está asignada en el espacio de proceso. En ese caso, el depurador no puede obtener los bits.

Cuestiones relacionadas