Share via


Sintaxis de símbolos y coincidencia de símbolos

Los símbolos permiten manipular directamente los tokens que usa el programa que se está depurando. Por ejemplo, puede establecer un punto de interrupción en la función main con el comando bp main o mostrar la variable de entero MyInt con el comando dd MyInt L1.

En muchos casos, los símbolos se pueden usar como parámetros en los comandos del depurador. Esto se admite para la mayoría de los parámetros numéricos y también se admite en algunos parámetros de texto. Además de las reglas generales para la sintaxis de símbolos, también hay reglas de sintaxis de símbolos que se aplican en cada uno de estos casos.

Reglas generales de sintaxis de símbolos

Un nombre de símbolo consta de uno o varios caracteres, pero siempre comienza con una letra, un carácter de subrayado (_), un signo de interrogación (?) o un signo de dólar ($).

Un nombre de símbolo puede calificarse por un nombre de módulo. Un signo de exclamación (!) separa el nombre del módulo del símbolo (por ejemplo, mymodule!main). Si no se usa ningún nombre de módulo, el símbolo todavía se puede prefijar con un signo de exclamación. El uso de un signo de exclamación sin nombre de módulo puede ser especialmente útil, incluso para variables locales, para indicar a un comando del depurador que un parámetro es un nombre y no un número hexadecimal. Por ejemplo, el comando dt (Display Type) leerá la variable fade como una dirección, a menos que se use un signo de exclamación o la opción -n. Sin embargo, para especificar que un símbolo es local, precedítelo con un signo de dólar ( $ ) y un signo de exclamación ( ! ), como en $!lime.

Los nombres de símbolo no distinguen mayúsculas de minúsculas. Esto significa que los depuradores no comprenderán correctamente la presencia de un myInt y un MyInt en el programa; cualquier comando que haga referencia a uno de estos puede tener acceso al otro, independientemente de cómo se capitalice el comando.

Sintaxis de símbolos en expresiones numéricas

El depurador entiende dos tipos diferentes de expresiones: expresiones de Ensamblador de macros de Microsoft (MASM) y expresiones de C++. En lo que respecta a los símbolos, estas dos formas de sintaxis difieren de la siguiente manera:

  • En las expresiones MASM, cada símbolo se interpreta como una dirección. Dependiendo de lo que haga referencia el símbolo, esta será la dirección de una variable global, variable local, función, segmento, módulo o cualquier otra etiqueta reconocida.

  • En las expresiones de C++, cada símbolo se interpreta según su tipo. Dependiendo de lo que hace referencia el símbolo, se puede interpretar como un entero, una estructura de datos, un puntero de función o cualquier otro tipo de datos. Un símbolo que no se corresponde con un tipo de datos de C++ (por ejemplo, un nombre de módulo sin modificar) producirá un error de sintaxis.

Para obtener una explicación de cuándo y cómo usar cada tipo de sintaxis, vea Evaluación de expresiones.

Si usa la sintaxis de la expresión MASM, cualquier símbolo que se pueda interpretar como un número hexadecimal o como un registro (por ejemplo, BadFeed, ebX) siempre debe tener como prefijo un signo de exclamación. Esto garantiza que el depurador lo reconoce como un símbolo.

El comando ss (Set Symbol Suffix) se puede usar para establecer el sufijo de símbolo. Esto indica al depurador que anexe automáticamente "A" o "W" a cualquier nombre de símbolo que no encuentre.

Muchas rutinas win32 existen en versiones ASCII y Unicode. Estas rutinas suelen tener un "A" o "W" anexado al final de sus nombres, respectivamente. El uso de un sufijo de símbolo ayudará al depurador a buscar estos símbolos.

La coincidencia de sufijos no está activa de forma predeterminada.

Sintaxis de símbolos en expresiones de texto

Los símbolos se pueden usar en los parámetros de texto de algunos comandos, por ejemplo, bm (Establecer punto de interrupción) y x (Examinar símbolos).

Estos parámetros de texto admiten una variedad de caracteres comodín y especificadores. Consulte Sintaxis de caracteres comodín de cadena para obtener más información. Además de los caracteres comodín de cadena estándar, una expresión de texto utilizada para especificar un símbolo se puede prefijar con un carácter de subrayado inicial. Al hacer coincidir esto con un símbolo, el depurador lo tratará como cualquier cantidad de caracteres de subrayado, incluso cero.

El sufijo de símbolo no se usa al buscar símbolos coincidentes en expresiones de texto.