Compartir a través de


Solución de problemas de puntos de interrupción en el depurador de Visual Studio

Se aplica a: Visual Studio

Advertencias de punto de interrupción

Al depurar, un punto de interrupción tiene dos estados visuales posibles:

  • Un círculo rojo sólido, si el depurador ha establecido correctamente un punto de interrupción en el proceso de destino.
  • Un círculo hueco (gris oscuro o blanco relleno, dependiendo del tema), si el punto de interrupción está deshabilitado o se produce una advertencia al intentar establecer el punto de interrupción.

Para determinar la diferencia, mantenga el puntero sobre el punto de interrupción y compruebe si hay una advertencia. En las dos secciones siguientes se describen las advertencias destacadas y cómo corregirlas.

"No se ha cargado ningún símbolo para este documento"

Vaya a Depurar módulos de Windows>al depurar>y compruebe si el módulo está cargado.

  • Si el módulo está cargado, compruebe la columna Estado de símbolos para ver si se han cargado los símbolos.
    • Si no se cargan símbolos, compruebe el estado del símbolo para diagnosticar el problema:

      En la ventana Módulos , haga clic con el botón derecho en el módulo para el que no se han cargado los símbolos y seleccione Información de carga de símbolos....

      Captura de pantalla de la información de carga de símbolos en la ventana Módulos.

      Para más información sobre la carga de símbolos, vea Especificación de archivos de código fuente y símbolos (.pdb).

    • Si se cargan los símbolos, el archivo PDB no contiene información sobre los archivos de código fuente. Estas son algunas de las posibles causas:

      • Si los archivos de código fuente se agregaron recientemente, confirme que se está cargando una versión actualizada del módulo.
      • Es posible crear archivos PDB quitados mediante la opción del enlazador /PDBSTRIPPED. Los archivos PDB quitados no contienen información del archivo de código fuente. Confirme que está trabajando con un archivo PDB completo y no con un archivo PDB quitado.
      • El archivo PDB está dañado parcialmente. Elimine el archivo y ejecute una compilación limpia del módulo para intentar resolver el problema.
  • Si el módulo no está cargado, compruebe lo siguiente para encontrar la causa:
    • Confirme que está depurando el proceso correcto.
    • Compruebe que está depurando el código correcto. Puede averiguar el tipo de código en el que está configurado el depurador para depurar en la ventana Procesos (Depurar>Windows>Procesos). Por ejemplo, si intenta depurar código de C#, confirme que el depurador está configurado para el tipo y la versión adecuados de .NET; por ejemplo, Administrado (v4*) frente a Administrado (v2*/v3*) en lugar de Administrado (CoreCLR).

"… el código fuente actual es distinto al de la versión compilada en..."

Si un archivo de código fuente ha cambiado y el origen ya no coincide con el código que se está depurando, el depurador no establecerá puntos de interrupción en el código de forma predeterminada. Normalmente, este problema se produce cuando se cambia un archivo de código fuente, sin que se haya recompilado el código fuente. Para corregir este problema, recompile el proyecto. Si el sistema de compilación considera que el proyecto ya está actualizado aunque no lo esté, puede forzar la recompilación del sistema del proyecto. Para recompilar el proyecto, puede guardar de nuevo el archivo de código fuente o limpiar la salida de compilación antes de compilar.

En raras ocasiones, es posible que desee depurar sin necesidad de tener código fuente coincidente. La depuración sin código fuente coincidente puede conducir a una experiencia de depuración confusa, por lo que debe asegurarse de cómo desea continuar.

Siga una de las opciones para deshabilitar estas comprobaciones de seguridad:

  • Para modificar un solo punto de interrupción, mantenga el puntero sobre el icono de punto de interrupción en el editor y seleccione el icono de configuración (engranaje). Se agrega una ventana de inspección al editor. En la parte superior de la ventana de inspección, hay un hipervínculo que indica la ubicación del punto de interrupción. Seleccione el hipervínculo para permitir la modificación de la ubicación del punto de interrupción y active Permitir que el código fuente sea distinto del de la versión original.
  • Para modificar esta configuración para todos los puntos de interrupción, vaya a Depurar>Opciones y configuración. En la página Depuración/General , desactive la opción Es necesario que los archivos de código fuente coincidan con la versión original . Asegúrese de volver a habilitar esta opción cuando termine la depuración.

El punto de interrupción se estableció correctamente (sin advertencia), pero no se alcanzó.

En esta sección se proporciona información para solucionar problemas cuando el depurador no muestra ninguna advertencia: el punto de interrupción es un círculo rojo sólido mientras se depura activamente, pero no se alcanza el punto de interrupción.

A continuación se indican algunas cosas que puede comprobar:

  1. Si el código se ejecuta en más de un proceso o en más de un equipo, asegúrese de que depura el proceso o equipo correcto.
  2. Confirme que el código se está ejecutando. Para probar que el código se está ejecutando, agregue una llamada a System.Diagnostics.Debugger.Break (C#/VB) o __debugbreak (C++) a la línea de código en la que está intentando establecer el punto de interrupción y, después, recompile el proyecto.
  3. Si está depurando código optimizado, asegúrese de que la función en la que se establece el punto de interrupción no se inserta en otra función. La prueba de Debugger.Break descrita en la comprobación anterior también puede funcionar para probar este problema.
  4. Para asociar a escenarios de proceso , asegúrese de depurar el tipo correcto de código (por ejemplo, código de script frente a .NET Framework frente a .NET 5+). Para investigar, active la opción Asociar a en el cuadro de diálogo Asociar al proceso y elija Seleccionar, si es necesario, para cambiar el tipo de código.

Eliminé un punto de interrupción, pero continúa alcanzándose al iniciar de nuevo la depuración

Si eliminó un punto de interrupción durante la depuración, puede alcanzarse de nuevo la próxima vez que se inicia la depuración. Para dejar de encontrar este punto de interrupción, asegúrese de que todas las instancias del punto de interrupción se quitan de la ventana Puntos de interrupción .