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

112

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

AlanKley
fuente
2
Producto → La limpieza me ayudó
Alexander Bekert
Tuve que hacer un reinicio completo con mi computadora para que funcionaran nuevamente, y ahora están teniendo muchos errores. Estoy usando xcode 10.2.1.
llamacorn
2
Xcode 11, reiniciar y limpiar el Xcode no funciona, reiniciar Mac no funciona. Eliminar la aplicación en el dispositivo y reconstruir soluciona este problema. Espero que esto ayude a alguien
Randall Wang

Respuestas:

148

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

Tengo dos cosas más que agregar.

(Mi primera sugerencia suena obvia, pero la primera vez que alguien me la sugirió, mi reacción fue en esta línea: "vamos, por favor, realmente crees que no lo sabría mejor ... oh").

  1. Asegúrese de no haber configurado accidentalmente "Configuración de compilación activa" en "Liberar".

  2. En "Objetivos" en la visualización del árbol gráfico de su proyecto, haga clic con el botón derecho en su Objetivo y seleccione "Obtener información". Busque una propiedad llamada "Generar símbolos de depuración" (o similar) y asegúrese de que esté MARCADA (también conocida como ACTIVADA). Además, puede intentar encontrar (también en Destino >> Obtener información) una propiedad llamada "Formato de información de depuración" y establecerla en "Enano con archivo dsym".

Hay una serie de otras propiedades en Destino >> Obtener información que podrían afectarlo. Busque cosas como optimizar o comprimir código y apague esas cosas (supongo que está trabajando en un modo de depuración, por lo que este no es un mal consejo). Además, busque cosas como quitar símbolos y asegúrese de que también esté APAGADO. Por ejemplo, "Strip Linked Product" debe establecerse en "No" para el destino de depuración.

pestófago
fuente
8
En XCode 4.5.2 tuve este problema y resultó ser porque había habilitado la "Optimización del tiempo de enlace", así que eso es otra cosa que verificar
taxilian
6
Para cambiar la configuración de compilación, vaya a Producto -> Esquema -> Editar esquema, en Ejecutar - Información. Para mí, lo que funcionó fue verificar "Debug Executable" en ese menú.
Jeffrey Sun
2
Secuestrar la respuesta principal para agregar que la sintaxis de Bison parece ser otra causa (exótica) de que los puntos de interrupción no funcionan (vea mi respuesta a continuación). Ojalá le ahorre algo de tiempo a la próxima persona que tenga ese problema.
Dave
2
También es muy fácil alternar inadvertidamente la activación del punto de interrupción con ⌘Y. Así que tengan cuidado con eso, niños.
dsgrnt
1
Probé el punto número 1 y funcionó para mí. Realmente me ayudó. Voto a favor.
NSPratik
49

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

1) Asegúrese de que el objetivo -> esquema -> Ejecutar - esté en modo de depuración (antes de lanzamiento)

2) Asegúrese de marcar la opción "Depurar ejecutable" a continuación:

ingrese la descripción de la imagen aquí

Oded Regev
fuente
4
Esto es exactamente lo que me pasó, la casilla de verificación no estaba marcada
anoop4real
El mismo problema para mí. ¿No debería estar habilitada esa opción por defecto (XCode 8.3)? ¿No se supone que todos somos desarrolladores, dispuestos a depurar de todos modos?
dgmz
Me funcionó en Xcode 9.3, sería genial si proporcionara otra imagen para la opción 1.
Kazi Abdullah Al Mamun
24

Ve a las preferencias de depuración de Xcode. Asegúrese de que "Cargar símbolos de forma perezosa" NO esté seleccionado.

AlanKley
fuente
7
Desafortunadamente, no hay preferencias de "depuración" en Xcode 6, y "lazily" no aparece en la documentación. Suspiro.
Oscar
1
bien, ahora no puedo encontrar la opción 'Load Symbols Lazily' en XCode 6
RNA
14

Solo estaba teniendo este mismo problema (nuevamente). Después de verificar tres veces "Cargar símbolos de manera perezosa" y eliminar y depurar los indicadores de generación de información, hice lo siguiente:

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

Puede realizar la misma tarea en el buscador haciendo clic derecho / opción-clic 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!

Frank Szczerba
fuente
2
Esto funciona, pero elimina todas sus preferencias ... Esto debe hacerse cuando nada más funcionó.
Rémi Doolaeghe
funcionó para mí, gracias. Me pregunto por qué Xcode apesta tanto. Xcode es el peor software jamás escrito por Apple.
Duck
Vaya, eso tiene 5 años. Es difícil de creer que todavía funciona, ¡y que sigue siendo un problema!
Frank Szczerba
No funcionó para mí. Estoy ejecutando Xcode 6.01. Ahora, cuando construyo, recibo varios errores de archivos faltantes. Estoy revirtiendo mi código para resolverlo.
Native_Mobile_Arch_Dev
Solo tuve que reiniciar Xcode, mi caso se debió al control de versiones de git, al confirmar los datos de estado de la interfaz de usuario de xcode.
Juan Boero
13

Para Xcode 4.x: Vaya a Producto> Flujo de trabajo de depuración y desmarque "Mostrar desmontaje al depurar".

Para Xcode 5.x Vaya a Depurar> Flujo de trabajo de depuración y desmarque "Mostrar desmontaje al depurar".

bneupaane
fuente
11

Otra razón

Establecer DeploymentPostprocessingen NO en BuildSettings - detalles aquí

En breve -

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

ingrese la descripción de la imagen aquí

gbk
fuente
Después de actualizar a XCode 7, esta configuración estaba de alguna manera YESsolo en mi subprojecty luego los puntos de interrupción no funcionaron subprojects. Y después de prepararlo NO, ¡fue perfecto!
Maheswaran Ravisankar
Esto funcionó para mí solo después de limpiar el proyecto, por lo que se llevará a cabo una reconstrucción completa.
Se realizó el
8

Vea esta publicación: ¿Los puntos de interrupción no funcionan en Xcode? . Es posible que esté presionando "Ejecutar" en lugar de "Depurar", en cuyo caso su programa no se ejecuta con la ayuda de gdb, en cuyo caso no puede esperar que los puntos de interrupción funcionen.

Soong
fuente
En Xcode 6.4, ahora solo hay un botón Ejecutar y si ejecuta una configuración de depuración o no depende de la configuración del esquema seleccionado actualmente.
user2067021
6

Una de las posibles soluciones para esto podría ser .... vaya a Producto> Esquema> Editar esquema> .. En Ejecutar> información> Ejecutable, marque "Depurar ejecutable".

Soropromo
fuente
Este me funcionó después de golpearme la cabeza durante 2 días.
Dileep Perla
Me alegro de que haya ayudado.
Soropromo
5

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

Vaya a Depurar> Flujo de trabajo de depuración y asegúrese de que 'Mostrar siempre el desmontaje' esté desactivado. Simple como eso. :(

Gaz Long
fuente
Esto funciona para mí, gracias
Md
5

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

En Objetivo de compilación -> Configuración de compilación -> Nivel de optimización: se cambió de "Optimizar para velocidad" -> "Sin optimización" (ahora es más lento pero funciona)

Strinder
fuente
5

Lo que lo resolvió en mi caso fue bastante simple, en Xcode - Producto - Carpeta de compilación limpia seguido de Producto - Ejecutar (no el botón Reproducir Xcode).

(Tuve el problema en Xcode 11 -beta 4 después de cambiar a la prueba unitaria con el botón de reproducción de Xcode presionando prolongadamente)

Lukas
fuente
4

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 listo para usar, en cuanto a la configuración, por lo que hay pocas posibilidades de que alguna de las configuraciones del depurador ajustarse al valor incorrecto) ...

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

A Xcode (/ LLVM) no le gustan los #linecomandos de preprocesador de estilo Bison .

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

Dave
fuente
4

Para Xcode 4:

go Product -> Debug ->  Activate Breakpoints
evya
fuente
¡Gracias! esto ayudó. Iba a publicar esto yo mismo, aparentemente presioné ⌘Y de alguna manera por error.
Ovi
2

Tengo muchos problemas con los puntos de interrupción en Xcode (2.4.1). Utilizo 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 se ignoran.

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

Si intento eliminar o deshabilitar puntos de interrupción a través de otro proyecto, la acción a veces no surte efecto, aunque el depurador indique que sí. Así que me encontraré rompiendo en puntos de interrupción deshabilitados, o en un punto de interrupción (ahora invisible) que eliminé anteriormente.

Charles Anderson
fuente
2

Mis puntos de interrupción no funcionaron y luego hice Build / Clean All Targets para que funcionen nuevamente.


fuente
2

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. Sigo usando Xcode 3.2.5. Obtuve los símbolos del teléfono seleccionando "usar este dispositivo para desarrollo" en la ventana del Organizador. Sin embargo, este teléfono se niega al punto de interrupción. Mi viejo 3GS lo hará punto de interrupción, el mismo proyecto de Xcode, la misma configuración ... solo un dispositivo diferente y está ejecutando iOS 4.0. Supongo que este es un error de Xcode en 3.2.5, ya que tengo los símbolos. Después de haber probado todas las soluciones publicadas aquí 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 que depurar. Quizás eso sea obvio, ¿alguien puede confirmarlo?

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

Gavin
fuente
2

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

Jack Bellis
fuente
2

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

ingrese la descripción de la imagen aquí

df611
fuente
1

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
brian claro
fuente
1

Encontré el problema. De alguna manera, el " Mostrar desmontaje al depurar se habilitó " en mi XCode, lo que crea ese problema. Cuando lo desactivé, todo mi depurador se detuvo en mi código fuente.

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

Perumal
fuente
1

Puede activar / desactivar puntos de interrupción en el menú desplegable ingrese la descripción de la imagen aquí

Stan
fuente
1

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 de reanudar.

William Jockusch
fuente
1

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

  • Ir a Ver-> Navegadores-> Mostrar navegadores de depuración
  • Haga clic derecho en la raíz del proyecto -> Mover puntos de interrupción (si se selecciona la opción Usuario)
  • (También seleccioné la opción compartir puntos de interrupción , aunque no estoy seguro de si es necesario).

Después de hacer ese cambio, configuro las opciones Mover puntos de interrupción de nuevo en el proyecto y anulo la selección de Compartir puntos de interrupción opción , y aún funciona.

No sé exactamente por qué, pero esto recupera mis puntos de interrupción.

Osk
fuente
1

Probé todas las cosas anteriores, pero para mí solo la desactivación de los puntos de interrupción de depuración una vez y luego la activación funcionó.

usuario8032120
fuente
@IshantMrinal ¿Por qué esto no es relevante? El usuario proporcionó una respuesta que funcionó en su escenario.
Noel Widmer
0

Al establecer su punto de interrupción, haga clic con el botón derecho y debería obtener varias opciones sobre cómo se maneja el punto de interrupción (registrar vars y continuar, pausar la ejecución, 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 de versiones pasadas / futuras)

Scott Swezey
fuente
0

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


fuente
0

Otra cosa que debe verificar es que si tiene un archivo plist "Derechos" para su modo de depuración (posiblemente porque está haciendo cosas con el llavero), asegúrese de que el archivo plist tenga la fila "get-task-allow" = YES. Sin él, la depuración y el registro se interrumpirán.

Davidcann
fuente
0

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

Aparte de esto, asegúrese de iniciarlo con el comando debug, no con el comando de ejecución. Puede hacerlo presionando la opción + comando + retorno, o la opción Ir (depurar) del menú de ejecución.

crackity_jones
fuente
0

Tengo Xcode 3.2.3 SDK 4.1 Los puntos de interrupción fallarán al azar. Descubrí que si limpias la compilación y usas el comando táctil bajo compilación, funcionan de nuevo.

Damon McGill
fuente
0

Aquí hay uno oscuro con el que me he encontrado: si está trabajando en una biblioteca compartida (o un complemento), sus puntos de interrupción se volverán amarillos al inicio, lo que podría hacer que golpee su teclado con frustración y elimine el proceso de depuración. Bueno, ¡no hagas eso! Los símbolos no se cargarán hasta que la aplicación cargue la biblioteca, momento en el que los puntos de interrupción serán válidos. Me encontré con este problema con un complemento del navegador ... Los BP se desactivaron hasta que navegué a una página que creó una instancia de mi complemento.

Tim Keating
fuente