web-development-kb-es.site

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

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

93
AlanKley

En primer lugar, estoy de acuerdo al 100% con la gente anterior que dijo apagarOFFLoad Symbols Lazily.

Tengo dos cosas más que añadir.

(Mi primera sugerencia parece obvia, pero la primera vez que alguien me lo sugirió, mi reacción fue la siguiente: "vamos, por favor, realmente crees que no lo sabría más ... oh").

  1. Asegúrate de no haber configurado accidentalmente "Configuración de construcción activa" en "Versión".

  2. Debajo de "Objetivos" en la visualización del árbol gráfico de su proyecto, haga clic derecho en su Objetivo y haga "Obtener información". Busque una propiedad llamada "Generar símbolos de depuración" (o similar) y asegúrese de que esté COMPROBADA (también conocida como ON). 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 varias otras propiedades en Destino >> Obtener información que pueden afectarle. Busque cosas como la optimización o la compresión del código y desactive esa función (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é DESACTIVADO. Por ejemplo, "Eliminar producto vinculado" debe configurarse en "No" para el objetivo de depuración.

137
pestophagous

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

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

2) Asegúrese de marcar la opción "Ejecutar depuración" ver más abajo:

 enter image description here 

29
Oded Regev

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

25
AlanKley

Solo estaba teniendo este mismo problema (otra vez). Después de revisar tres veces "Cargar símbolos perezosamente" 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. eliminar todo excepto el archivo .pbxproj (tuve frank.mode1v3 y frank.pbxuser)

Puede realizar la misma tarea en el Finder haciendo clic con el botón derecho/opción haciendo clic en el paquete .xcodeproj y seleccionando "Mostrar contenido del paquete".

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

14
Frank Szczerba

Para Xcode 4.x: Ir a Producto> Depurar flujo de trabajo y desmarcar "Mostrar desmontaje al depurar".

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

12
bneupaane

Ver este post: ¿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!

8
Soong

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 eliminarse y el modo de archivo, el propietario y la información de grupo deben establecerse en valores estándar. [DEPLOYMENT_POSTPROCESSING]

 enter image description here 

7
gbk

Para Xcode 4:

go Product -> Debug ->  Activate Breakpoints
4
evya

Llegó a esta página con el mismo problema (el código C en Xcode 6 no se detuvo en los puntos de interrupción) y ninguna de las soluciones anteriores funcionó (el proyecto estaba prácticamente fuera de la caja, en cuanto a configuración, por lo que hay pocas posibilidades de que alguna de las configuraciones del depurador se establece en el valor incorrecto) ...

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

Xcode (/ LLVM) no le gustan los comandos del preprocesador #line de estilo Bison.

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

4
Dave

Esto me tuvo 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 'Mostrar siempre desmontaje' esté desactivado. Simple como eso. :(

3
Gaz Long

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

Destino de compilación -> Configuraciones de compilación -> Nivel de optimización: cambiado de "Optimizar por velocidad" -> "Sin optimización" (ahora es más lento pero funciona)

3
Strinder

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 desarrollo" en la ventana del Organizador. Este teléfono se niega a punto de interrupción sin embargo. Mi antiguo 3GS will breakpoint, el mismo proyecto de Xcode, la misma configuración ... solo un dispositivo diferente y funciona con iOS 4.0. Supongo que este es un error de Xcode en 3.2.5, ya que tengo los símbolos. Habiendo probado todas las soluciones publicadas aquí hasta ahora, he decidido que la solución a mi problema es seguir adelante y actualizar a XCode 4. Tal vez no pueda depurar de manera efectiva a menos que su SDK base sea al menos tan alto como el sistema en el que se debe depurar. Tal vez sea obvio, ¿alguien puede confirmar?

Edición: actualizaré cuando pueda confirmar que esto es cierto.

2
Gavin

Eliminar mi carpeta de Build me solucionó el problema.

2
Jack Bellis

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 se ignoran.

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

Si intento eliminar o deshabilitar los 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é rompiendo en puntos de interrupción deshabilitados, o en un punto de interrupción (ahora invisible) que eliminé anteriormente.

2
Charles Anderson

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

2
snowytree

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 con forma de flecha azul):

enter image description here

2
df611

Esta podría ser una de las posibles razones para que esto suceda ... vaya a Producto> Esquema> Editar esquema> .. En Ejecutar> información> Ejecutable verifique "Depurar ejecutable".

1
Soropromo

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
1
brian.clear

Intenté todas las cosas anteriores, pero para mí solo desactivé los puntos de interrupción de la depuración una vez y luego activándolos funcionó.

1
user8032120

 enter image description here

1
Stan

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

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

1
Perumal

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, establezca manualmente i en cero, luego presione el botón de reanudar.

1
William Jockusch

Me ha pasado lo mismo en XCode 6.3.1. Me las arreglé para 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 seleccionó la opción de usuario)
  • (También seleccioné la opción compartir puntos de interrupción , aunque no estoy seguro si eso es necesario).

Después de hacer ese cambio, establezco las opciones Mover puntos de interrupción al proyecto, y deseleccionando las opciones Compartir puntos de interrupción , y aún funciona.

No sé exactamente por qué, pero esto recupera mis puntos de ruptura.

1
Osk

En Xcode 6.4, necesitaba reiniciar mi Mac.

(Intenté habilitar/deshabilitar puntos de interrupción, reiniciar el dispositivo iOS, reiniciar Xcode, eliminar archivos de puntos de interrupción del paquete del área de trabajo ...)

0
user2067021

Si está utilizando Subversion, simplemente revierta sus archivos de proyecto ( solo ) a la última vez que supo que el depurador estaba funcionando.

0
stephen

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 pondrán de color amarillo en el inicio, lo que podría hacer que golpees el teclado con frustración y acabes con 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 deshabilitaron hasta que navegué a una página que creaba una instancia de mi complemento.

0
Tim Keating

Esto sucede de vez en cuando con un proyecto iOS al menos. Para solucionarlo, tuve que reiniciar el dispositivo iOS, salir de Xcode y reconstruir el proyecto.

0
kakyo

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

0
dan

Si probó todas las comprobaciones básicas, compruebe si hay Nivel de optimización en el destino del proyecto y la configuración del proyecto. asegúrese de haber seleccionado Ninguno para la depuración.

 enter image description here 

He tenido problemas con Xcode perdiendo puntos de interrupción al usar el simulador y tener la configuración de Scheme Launch para "esperar el ejecutable". Cambie eso a "iniciar automáticamente" y los puntos de ruptura vuelven a la vida.

0
Richard

Otra cosa que debe verificar es que si tiene un archivo plist "Entitlements" 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 romperán.

0
davidcann

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

0
AlanKley

Tenía el mismo problema cuando quería depurar un complemento web donde el ejecutable personalizado era Safari 5.1. Estaba funcionando 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.

0
user917691

Tengo Xcode 3.2.3 SDK 4.1 Los puntos de interrupción fallarán al azar. Descubrí que si limpia la compilación y usa el comando táctil en la compilación, volverán a funcionar.

0
Damon McGIll

Otra razón por la que los puntos de interrupción pueden volverse amarillos es si el binario de la aplicación que está depurando se ha modificado desde que se ejecutó por primera vez. En mi caso, agregué una carpeta a la carpeta de Contenidos/Recursos de la aplicación después de haber depurado el programa una vez. En la ejecución de la depuración después de agregar la carpeta, los puntos de interrupción se volvieron amarillos y se ignoraron. Modifiqué mi procedimiento: hice una limpieza, una compilación, agregué la carpeta, luego corrí y todo estuvo bien.

Quizás Xcode (o OS X) crea y recuerda su propia firma digital de la aplicación (que no fue no firmada digitalmente) y luego, al detectar que la aplicación fue modificada, se niega a intentar establecer puntos de interrupción. Al hacer mis mods antes de la primera ejecución (depuración) de la aplicación, la firma digital se realizó con mis mods.

Todo esto en OS X 10.6.8 utilizando Xcode 3.2.2.

0
user532477

Solo resolví esto en XCode 4.2, ninguno de los anteriores ayudó. El problema fue (no estoy seguro de lo que realmente sucedió, pero, quizás esto ayude a alguien): mi compañero de equipo creó nuevas configuraciones de compilación y actualizó el proyecto en SVN. Tenía la configuración de compilación anterior configurada en la configuración de Ejecutar esquema, por lo que los pasos para mí fueron:

  1. Producto -> Editar esquema ...
  2. Seleccione "Ejecutar% project_name.app%" (o cualquier problema que cause)
  3. En la configuración de configuración combinada, seleccione esa nueva configuración de construcción de mi compañero de equipo.

Y eso es todo, los puntos de ruptura están de vuelta otra vez. Espero que esto ayude.

0
MANIAK_dobrii

No he hecho Xcode en un momento, pero te recomiendo que deshabilites "Zerolink" y "Load Symbols Lazily"; Eso solucionará la mayoría de los problemas. Zerolink es una abominación de todos modos.

0
duane

Parece que hay 3 estados para los puntos de interrupción en Xcode. Si haces clic en ellos irán a través de las diferentes configuraciones. El azul oscuro está habilitado, el gris atenuado está deshabilitado y, a veces, he visto un azul pálido que requería que volviera a hacer clic en el punto de interrupción para que se fuera del color azul oscuro.

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

0
crackity_jones

Al configurar su punto de ruptura, haga clic con el botón derecho y debería obtener varias opciones sobre cómo se maneja el punto de ruptura (registrar las variables y continuar, pausar la ejecución, etc.)

También asegúrese de que "Cargar símbolos perezosamente" no esté seleccionado en las preferencias de depuración.

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

0
Scott Swezey

Tener Xcode 5 y 6 GM causó que el primero perdiera la funcionalidad de punto de interrupción (las betas de Xcode 6 estaban bien).

Probé muchos de los métodos sugeridos, pero finalmente me di por vencido y ahora solo uso Xcode 6.

0
Rivera

Puede marcar una configuración en la configuración de destino Compilación de Apple LLVM 4.1 Sección de generación de código Generar símbolo de depuración = SÍ

0
Pushan

En mi caso, descubrí que los puntos de interrupción se desactivaron accidentalmente. Puede reactivarlo nuevamente a través de Depurar-> Activar puntos de interrupción [Cmd + Y]. Si observa marcadores de punto de ruptura de color gris en lugar del marcador azul habitual, este es probablemente el caso.

Al final resultó que siempre puede alternar la activación de los puntos de interrupción con las teclas Cmd + Y, es posible que tenga que presionar esta combinación de teclas sin notarlo. Este informe se basa en Xcode 7.2.

0
Benny Khoo

En el caso de Xcode 4 y versiones posteriores, * Cargar los símbolos con pereza * parece ser soltado . Así que refiera este post haga clic aquí

La explicación simple y detallada funcionó para mí.

0
Ajit Satarkar