Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 de WinDbg.
Direcciones en puntos de interrupción
Los puntos de interrupción admiten muchos tipos de sintaxis de direcciones, incluidas direcciones virtuales, offsets de funciones y números de líneas de código fuente. 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 expresiones numéricas, Sintaxis de línea de origen y 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__MyMethodEn 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 la sintaxis @!"chars". Se trata de un escape especial en el evaluador de MASM que le permite proporcionar texto arbitrario para la resolución de símbolos. Debe comenzar con los tres símbolos @!" y terminar con una comilla ("). Sin esta sintaxis, no puede usar espacios, corchetes angulares (<, >) u otros caracteres especiales en nombres de símbolos en el 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 la 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 (o 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
Los identificadores de punto de interrupción no necesitan ser referidos 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 sintaxis siguiente.
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 que los scripts del depurador seleccionen de forma programática un punto de interrupción. En el ejemplo siguiente, el punto de interrupción cambia en función del valor de un pseudo-register 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-registro con la sintaxis $bpNúmero, donde Número es el identificador del punto de interrupción. Para obtener más información sobre esta sintaxis, consulte Pseudo-Register Sintaxis.
Resolución ambigua del punto de interrupción
En la versión 10.0.25310.1001 y posteriores del motor del depurador, se admite ahora la resolución ambigua de puntos 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.
Consulte también
bp, bu, bm (Establecer punto de interrupción)
Puntos de interrupción sin resolver (puntos de interrupción bu)