2009-05-29 26 views
9

tengo un proyecto XCode (mi proyecto xcode principal que tiene su ejecutable). Tiene dependencias en algunos otros proyectos (en la pestaña Proyecto en Vista detallada, hay algunos otros proyectos xcode de los que depende).Cómo establecer un punto de interrupción en un proyecto xcode dependiente

Mi pregunta es ¿cómo puedo configurar el punto de interrupción en el código del proyecto dependiente?

yo probamos este, pero esto no funciona 1. Abra Mi principal proyecto Xcode 2. haga doble clic en uno de los proyectos Xcode dependiente 3. En el directorio de origen, encontrar el archivo que desea romper y añadir una punto de interrupción (al hacer clic al costado del borde del editor, aparece una "cosa de marcador azul") 4. Vuelva a 'Build and Go', mi aplicación se ejecuta pero nunca se rompe en el punto de interrupción que configuré # 3.

¿Alguien puede ayudarme? He pasado días en esto, no puedo entender por qué.

Gracias.

+0

Lo está haciendo de la manera correcta, siempre que se construya el proyecto dependiente, y el proyecto principal se vincule con su producto de compilación. – cdespinosa

Respuesta

0

algunas cosas aquí ... (algunas obvias otras no)

1) asegúrese de que el proyecto dependientes se compila con símbolos de depuración (estoy asumiendo su biblioteca)

2) será Asegúrese de que su ejecutable activa es la vinculación con la versión de depuración de la biblioteca depende

3) establecer un punto de interrupción en su proyecto principal, justo antes de llamar a la puerta de entrada de su lib, y establecer un punto de ebullición en el punto de entrada de la lib ... (además del punto de quiebre real que buscas para golpear ...)

He encontrado que la mejor manera de depurar una biblioteca es abrir el proyecto lib y establecer el ejecutable activo como el proyecto principal, y luego simplemente presionar "compilar y depurar" directamente desde el proyecto de la biblioteca.

Espero que esto ayude, ¡buena suerte y diviértase!

0

He tenido problemas similares con Xcode. La solución para mí es asegurarme de que también haya un punto de interrupción en el proyecto principal que recibe el impacto (como Kent menciona en su tercer punto). Sin embargo, no entiendo por qué funciona esto.

También debe establecer puntos de interrupción en un proyecto cuando lo tiene abierto. Si no lo hace, pueden comenzar a portarse mal: detener el flujo de ejecución una vez que los haya desactivado o eliminado, o no funcione cuando crea que están habilitados.

0

Asegúrese de seleccionar 'Generar y Depurar' (para el paso 4). 'Ir' a veces significa 'Ejecutar' (puntos de interrupción desactivados) y a veces significa 'Depurar' (puntos de interrupción habilitados).

Además, asegúrese de dejar abierto el proyecto dependiente mientras depura el proyecto principal.

1

Haré un eco de Jon-Eric aquí y también agregaré que si habitualmente ejecuta su proyecto con Cmd + Enter, debería considerar cambiar a Cmd + Y para habilitar gdb cada vez.

1

Cuando he tenido problemas para establecer puntos de interrupción con la GUI de Xcode, he logrado hacerlo con la línea de comandos del depurador (es decir, el indicador "lldb" en la ventana de salida). Por ejemplo, para establecer un punto de interrupción en el archivo de origen "cliente".m" en la línea 42, escriba:

(lldb) b client.m:42 

Además de ser una solución para este problema en particular, la depuración en la línea de comandos ofrece mucha más flexibilidad e automatability que cualquier interfaz gráfica de usuario podría Un buen punto de partida sería la LLDB tutorial. . (Revelación completa: soy un fanático desde hace mucho tiempo de Unix y gdb, así que hay algunos sesgos aquí).

Por supuesto, como han mencionado otros, asegúrese de que la biblioteca/proyecto dependiente esté compilada con símbolos de depuración. ayuda; buena suerte.

15

1) Agregue el punto de interrupción en su proyecto

2) Entrar en los puntos de interrupción ver en Xcode (arriba a la izquierda, además de navegador de proyecto) El icono de la vista es como un icono de punto de interrupción

3) Haga clic derecho sobre el punto de interrupción requerido y seleccione "Mover a" -> "Usuario"

Si el punto de interrupción se encuentra en el proyecto "Usuario", todos los proyectos pueden acceder a él.

+0

Gracias muy útiles. Pero me pregunto: el punto de interrupción estaba en la sección 'Espacio de trabajo'. ¿No debería ser ya accesible para todos los proyectos en el espacio de trabajo? El hecho es: no lo es, pero me pregunto por qué? – Guian

0

Además de la respuesta de Kent sobre los símbolos de depuración, verifique el valor de COPY_PHASE_STRIP en la configuración de compilación del proyecto principal, y asegúrese de que esté configurado como NO en la depuración.

Cuestiones relacionadas