¿Por qué no funcionan mis puntos de interrupción?

Tengo puntos de interrupción establecidos pero Xcode parece ignorarlos.

En primer lugar, estoy de acuerdo al 100% con las personas anteriores que dijeron apagar los Load Symbols Lazily .

Tengo dos cosas más para agregar.

(Mi primera sugerencia parece obvia, pero la primera vez que alguien me la sugirió, mi reacción fue la siguiente: “vamos, por favor, realmente piensas que no sabría nada mejor … oh”).

  1. Asegúrese de no haber configurado accidentalmente “Configuración de comstackción activa” en “Liberar”.

  2. En “Objetivos” en la visualización gráfica de árbol de su proyecto, haga clic derecho en su objective y haga “Obtener información”. Busque una propiedad llamada “Generate Debug Symbols” (o similar) y asegúrese de que esté CHECKED (también conocido como ON). Además, puede intentar encontrar (también en Target >> Get Info) una propiedad llamada “Debug Information Format” y configurarla en “Dwarf with dsym file”.

Hay otras propiedades en Target >> Get Info que pueden afectarlo. Busque cosas como optimizar o comprimir el código y desactivarlo (supongo que está trabajando en modo de depuración, por lo que este no es un mal consejo). Además, busque cosas como quitar los símbolos y asegúrese de que también esté desactivado. Por ejemplo, “Strip Linked Product” debe establecerse en “No” para el objective Debug.

Ve a las preferencias de Xcode Debugging. Asegúrese de que “Cargar símbolos de forma perezosa” NO esté seleccionado.

En Xcode 7, lo que funcionó para mí fue:

1) Asegúrese de que el objective -> esquema -> Ejecutar – está en modo Depuración (era Versión)

2) Asegúrate de marcar la opción “Debug executable” ver a continuación:

enter image description here

Estaba teniendo este mismo problema (nuevamente). Después de comprobar tres veces “Cargar símbolos de forma perezosa” y eliminar y depurar indicadores de generación de información, hice lo siguiente:

  1. salir de Xcode
  2. abrir una ventana de terminal y cd al directorio del proyecto
  3. cd en el directorio .xcodeproj
  4. eliminar todo excepto el archivo .pbxproj (tenía frank.mode1v3 y frank.pbxuser)

Puede realizar la misma tarea en el buscador haciendo clic derecho / con opción en el paquete .xcodeproj y seleccionando “Mostrar contenido del paquete”.

Cuando reinicié Xcode, todas mis ventanas se habían restablecido a las posiciones predeterminadas, etc., ¡pero los puntos de interrupción funcionaron!

Para Xcode 4.x: Ir a producto> Depurar flujo de trabajo y desmarque “Mostrar desensamblaje al depurar”.

Para Xcode 5.x Ir a depuración> Depurar flujo de trabajo y desmarcar “Mostrar desensamblaje al depurar”.

Ver esta publicación: ¿ Puntos de interrupción que no funcionan en Xcode? . Puede que esté presionando “Ejecutar” en lugar de “Depurar”, en cuyo caso su progtwig no se ejecuta con la ayuda de gdb, en cuyo caso no puede esperar que funcionen los puntos de interrupción.

Otra razón

Establezca DeploymentPostprocessing en NO en BuildSettings – detalles aquí

En breve –

La activación de esta configuración indica que los binarios deben ser eliminados y que el modo de archivo, el propietario y la información de grupo deben establecerse en valores estándar. [DEPLOYMENT_POSTPROCESSING]

enter image description here

Llegué a esta página con el mismo problema (el código C en Xcode 6 no se detiene en los puntos de interrupción) y ninguna de las soluciones anteriores funcionó (el proyecto estaba prácticamente fuera de la caja, con ajustes, tan pocas posibilidades de que cualquiera de las configuraciones del depurador establecerse en el valor incorrecto) …

Después de perder bastante tiempo reduciendo el problema, finalmente descubrí el culpable (para mi código):

A Xcode (/ LLVM) no le gustan los comandos del preprocesador #line Bison-style.

Eliminarlos solucionó el problema (el depurador se detuvo en mis puntos de interrupción).

Para Xcode 4:

 go Product -> Debug -> Activate Breakpoints 

Tengo muchos problemas con los puntos de interrupción en Xcode (2.4.1). Uso un proyecto que solo contiene otros proyectos (como una Solución en Visual Studio). A veces encuentro que los puntos de interrupción no funcionan en absoluto a menos que haya al menos un punto de interrupción establecido en el proyecto inicial (es decir, el que contiene el punto de entrada para mi código). Si los únicos puntos de interrupción están en proyectos de “nivel inferior”, simplemente son ignorados.

También parece que Xcode solo maneja las operaciones de punto de interrupción correctamente si actúas en el punto de interrupción cuando estás en el proyecto que contiene la línea de origen en la que está el punto de interrupción.

Si bash eliminar o deshabilitar puntos de interrupción a través de otro proyecto, la acción a veces no tiene efecto, aunque el depurador indique que sí lo ha hecho. Así que me encontraré interrumpiendo puntos de interrupción deshabilitados, o en un punto de interrupción (ahora invisible) que eliminé antes.

Creo que el problema podría ser la incompatibilidad entre las versiones del dispositivo y Xcode. Tengo este problema al intentar depurar en mi iPhone 4S con iOS 5.0.1. Todavía estoy usando Xcode 3.2.5. Obtuve los símbolos del teléfono seleccionando “usar este dispositivo para el desarrollo” en la ventana Organizador. Este teléfono se niega a punto de interrupción sin embargo. Mi antiguo 3GS tendrá un punto de interrupción, el mismo proyecto Xcode, la misma configuración … solo un dispositivo diferente y está ejecutando iOS 4.0. Supongo que esto es un error de Xcode en 3.2.5, ya que tengo los símbolos. Después de haber probado todas las soluciones publicadas hasta ahora, he decidido que la solución a mi problema es continuar y actualizar a XCode 4. Quizás no pueda depurar de manera efectiva a menos que su SDK base sea al menos tan alto como el sistema en el cual depurar. Quizás sea obvio, ¿alguien puede confirmar?

Editar: actualizaré cuando pueda confirmar que esto es cierto.

Eliminar mi carpeta de comstackción me solucionó el problema.

Para esto, y también para Xcode 6 y superior, asegúrese de que el botón de estado de punto de interrupción esté activado (el botón de flecha azul):

enter image description here

Solución para mí con XCode 9.4.1 (no se detuvo en ningún punto de interrupción):

En construcción Objetivo -> Configuraciones de comstackción -> Nivel de optimización: Cambiado de “Optimizar por velocidad” -> “Sin optimización” (ahora es más lento pero funciona)

He tenido mis puntos de interrupción no funcionan y luego he hecho Build / Clean All Targets para que funcionen nuevamente.

En Xcode 4

 - Product menu > Manage Schemes - Select the scheme thats having debugging problems (if only one choose that) - Click Edit button at bottom - Edit Scheme dialog appears - in left panel click on Run APPNAME.app - on Right hand panel make sure youre on INFO tab - look for drop down DEBUGGER: - someone had set this to None - set to LLDB if this is your preferred debugger - can also change BUILD CONFIGURATION drop down to Debug - but I have other targets set to AdHoc which debug fine once Debugger is set 

Encontré el problema. De alguna manera, el ” Show Disassembly when debugging ” fue habilitado en mi XCode que crea ese problema. Cuando lo desactivé, todo mi depurador se detuvo en mi código fuente.

Puede encontrarlo en: Product->Debug Workflow->Show Disassembly al depurar.

Puede activar / desactivar puntos de interrupción en el menú desplegable enter image description here

Si todo lo demás falla, en lugar de un punto de interrupción, puede llamar a la siguiente función:

 void BreakPoint(void) { int i=1; #if !__OPTIMIZE__ printf("Code is waiting; hit pause to see.\n"); while(i); #endif } 

Para reanudar, configure manualmente i en cero, luego presione el botón reanudar.

Me ha pasado lo mismo en XCode 6.3.1. Logré arreglarlo por:

  • Ir a Ver-> Navegadores-> Mostrar Debug Navigators
  • Haga clic con el botón derecho en la raíz del proyecto -> Mover puntos de interrupción (si se seleccionó la opción de usuario)
  • (También seleccioné la opción compartir puntos de interrupción , aunque no estoy seguro de que sea necesario).

Después de hacer ese cambio, establezco las opciones Mover puntos de interrupción nuevamente al proyecto, y deselecciono la opción Compartir puntos de interrupción , y todavía funciona.

No sé exactamente por qué, pero esto me devuelve los puntos de inflexión.

Esto me tenía en Xcode 9 por medio día frustrante. Terminó siendo una configuración de depuración simple.

Vaya a Depurar> Depurar flujo de trabajo y asegúrese de que ‘Siempre mostrar desensamblaje’ esté desactivado. Simple como eso. 🙁

Al configurar su punto de corte, haga clic con el botón secundario y obtendrá varias opciones sobre cómo se maneja el punto de ruptura (log vars y continue, pause execution, etc.)

También asegúrese de que “Cargar símbolos de forma perezosa” no esté seleccionado en las preferencias de depuración.

(Se aplica a Xcode 3.1, no estoy seguro acerca de las versiones pasadas / futuras)

También asegúrese de que la distribución AppStore de la aplicación no esté también instalada en el dispositivo.

Otra cosa que debes comprobar es que si tienes un archivo plist “Entitlements” para tu modo de depuración (posiblemente porque estás haciendo cosas con el Keychain), asegúrate de que el archivo plist tenga la fila “get-task-allow” = YES. Sin él, la depuración y el registro se romperán.

Parece haber 3 estados para los puntos de interrupción en Xcode. Si haces clic en ellos, pasarán por las diferentes configuraciones. El azul oscuro está habilitado, el gris oscuro está desactivado y he visto un azul pálido que a veces requería que hiciera clic en el punto de interrupción nuevamente para que pasara al color azul oscuro.

Aparte de esto, asegúrese de que lo está ejecutando con el comando de depuración, no con el comando de ejecución. Puede hacerlo presionando la opción + comando + retorno, o la opción Ir (depuración) del menú de ejecución.

Tengo Xcode 3.2.3 SDK 4.1 Los puntos de interrupción fallarán al azar. He encontrado que si limpias la comstackción y usas el comando táctil en comstackción, vuelven a funcionar.

Aquí hay uno oscuro con el que me he topado: si estás trabajando en una biblioteca compartida (o un complemento), tus puntos de interrupción se volverán amarillos al inicio, lo que puede causarte una frustración en el teclado y matar el proceso de depuración. Bueno, no hagas eso! Los símbolos no se cargarán hasta que la aplicación cargue la biblioteca, en cuyo punto los puntos de interrupción serán válidos. Me encontré con este problema con un complemento de navegador … Los BP se desactivaron hasta que navegué a una página que creaba una instancia de mi complemento.

Estaba enfrentando el mismo problema cuando quería depurar un complemento web donde el ejecutable personalizado era Safari 5.1. Funcionaba bien hasta que actualicé mi Safari a 5.1 desde 4.0.5. Una vez que instalé Safari 4.0.5 nuevamente, todos los puntos de interrupción comenzaron a funcionar sin modificar ninguna configuración de Xcode.

No he hecho Xcode en un momento, pero le recomiendo que desactive “Zerolink” y “Cargar símbolos perezosamente”; eso solucionará la mayoría de los problemas. Zerolink es una abominación de todos modos.

Creo que un proyecto también puede corromperse con respecto a los puntos de interrupción. Tengo un proyecto, por ejemplo, que NO ROMPERá ningún punto de interrupción que recuerde de la sesión anterior. Primero escribí sobre esto aquí