Compartir a través de


Sintaxis de punto de interrupción

Los siguientes elementos de sintaxis se pueden usar al crear un punto de interrupción, ya sea a través de la ventana Comando del depurador o a través de la interfaz gráfica winDbg.

Direcciones en puntos de interrupción

Los puntos de interrupción admiten muchos tipos de sintaxis de dirección, incluidas direcciones virtuales, desplazamientos de función y números de línea de origen. Por ejemplo, puede usar cualquiera de los siguientes comandos para establecer puntos de interrupción:

0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`

Para obtener más información sobre esta sintaxis, vea Sintaxis de expresión numérica, Sintaxis de línea de origen y los temas de comandos individuales.

Puntos de interrupción en métodos

Si desea colocar un punto de interrupción en el método MyMethod en la clase MyClass , puede usar dos sintaxis diferentes:

  • En la sintaxis de la expresión MASM, puede indicar un método por dos puntos o por un carácter de subrayado doble.

    0:000> bp MyClass::MyMethod 
    0:000> bp MyClass__MyMethod 
    
  • En la sintaxis de expresión de C++, debe indicar un método por dos puntos.

    0:000> bp @@( MyClass::MyMethod ) 
    

Si desea usar un comando de punto de interrupción más complejo, debe usar la sintaxis de expresión MASM. Para obtener más información sobre la sintaxis de expresiones, vea Evaluación de expresiones.

Puntos de interrupción mediante expresiones MASM complicadas

Para establecer un punto de interrupción en funciones complicadas, incluidas las funciones que contienen espacios, así como un miembro de una clase pública de C++, incluya la expresión entre paréntesis. Por ejemplo, use bp (?? MyPublic) o bp (operador new).

Una técnica más versátil es usar @!" Sintaxis chars". Se trata de un escape especial en el evaluador de MASM que permite proporcionar texto arbitrario para la resolución de símbolos. Debe empezar con los tres símbolos @!" y terminar con una comilla ("). Sin esta sintaxis, no puede usar espacios, corchetes angulares (<, >) ni otros caracteres especiales en los nombres de símbolos del evaluador de MASM. Esta sintaxis es exclusivamente para nombres y no para parámetros. Las plantillas y sobrecargas son los orígenes principales de símbolos que requieren esta notación de comillas. También puede establecer el comando bu mediante @!" Sintaxis chars", como se muestra en el ejemplo de código siguiente.

0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="

En este ejemplo, ExecutableName es el nombre de un archivo ejecutable.

Esta sintaxis de escape es más útil para C++ (por ejemplo, operadores sobrecargados) en lugar de C porque no hay espacios (ni caracteres especiales) en los nombres de función de C. Sin embargo, esta sintaxis también es importante para una gran cantidad de código administrado debido al uso considerable de sobrecargas en .NET Framework.

Para establecer un punto de interrupción en texto arbitrario en la sintaxis de C++, use bu @@c++(text) para símbolos compatibles con C++.

Puntos de interrupción en scripts

No es necesario hacer referencia a los identificadores de punto de interrupción explícitamente. En su lugar, puede usar una expresión numérica que se resuelva en un entero que corresponda a un identificador de punto de interrupción. Para indicar que la expresión debe interpretarse como punto de interrupción, use la siguiente sintaxis.

b?[Expression]

En esta sintaxis, se requieren los corchetes y Expression significa cualquier expresión numérica que se resuelva en un entero que corresponda a un identificador de punto de interrupción.

Esta sintaxis permite a los scripts del depurador seleccionar mediante programación un punto de interrupción. En el ejemplo siguiente, el punto de interrupción cambia según el valor de un pseudo-registro definido por el usuario.

b?[@$t0]

Pseudo-registros de puntos de interrupción

Si desea hacer referencia a una dirección de punto de interrupción en una expresión, puede usar un pseudo-register con la sintaxis numberde $bp, donde Number es el identificador del punto de interrupción. Para obtener más información sobre esta sintaxis, vea sintaxis Pseudo-Register.

Resolución ambigua del punto de interrupción

En la versión 10.0.25310.1001 y posteriores del motor del depurador, ahora se admite la resolución ambigua del punto de interrupción. Los puntos de interrupción ambiguos permiten al depurador establecer puntos de interrupción en determinados escenarios en los que una expresión de punto de interrupción se resuelve en varias ubicaciones. Para obtener más información, vea Resolución ambigua de puntos de interrupción.

Vea también

Usar puntos de interrupción

Sintaxis de punto de interrupción

bp, bu, bm (Establecer punto de interrupción)

Puntos de interrupción sin resolver (bu Puntos de interrupción)