2010-01-07 10 views
22

He estado programando en la Mac desde que era un niño usando THINK C. Nunca tuve que usar un depurador tan malo como el que viene con XCode.Depurador XCode es una mierda; ¿alternativas?

  • No responde y se atasca aún más y se vuelve inestable al ver más variables.
  • Cuando se bloquea, pierdo el historial de deshacer de mis fuentes porque está integrado con el editor.
  • No se beneficia de la integración, ya que el visor de origen no se puede utilizar: intentar seleccionar una línea haciendo clic en el margen izquierdo hace que aparezca un botón de ninguna parte que hace que se programe continuar a esa línea , en la ventana del editor, que no debe relacionarse con la depuración en primer lugar. Horrible interfaz de usuario y horrible implementación.
  • Una sintaxis colapsable de "resumen" de datos bonitos que no puede enviar un objeto a la ventana Expresiones.
  • La ventana Expressions no tiene conocimiento de ningún tipo de contexto, nunca.
  • No se puede seleccionar un hilo en particular para depurar, por lo que puedo ver, y no salta al hilo que llamó abort().

El núcleo depurador para Mac OS 9 era mejor que esto. Es hora de darse por vencido.

¿Qué interfaces frontales independientes para GDB funcionan en OS X? Encontré http://ddd.darwinports.com/ pero es difícil encontrar elogios o anécdotas para ello u otras alternativas.

El soporte para contenedores STL es una gran ventaja para mí. No me podría importar menos Objective-C o Apple-cualquier cosa.

+0

¿Qué quieres, estudios visuales en el mac? Tendrá los mismos problemas para escribir GCC/GDB en x86. –

+2

Algunas de las deficiencias de Xcode se pueden aliviar si está dispuesto a usar la consola de gdb directamente. Por ejemplo, puede realizar dumping de NSStrings largos con p (nulo) CFShow (MiCadena) en la consola. –

+2

+1 por ¡PIENSA C! (Aunque me gustó THINK Pascal's depurador). – Seth

Respuesta

1

¿Has probado el monodesarrollo? Puede construir y depurar código C, no mostrar cómo maneja obj-c.

Si puede hacer que DDD funcione, lo he usado con buenos resultados en muchas plataformas extrañas. DDD requiere X11.

1

He tenido la misma experiencia con XCode, y terminé cambiando a Netbeans y Eclipse (todavía no estoy seguro de cuál prefiero sobre el otro, ambos tienen puntos fuertes y débiles).

Esto puede parecer una elección extraña, pero ambos ofrecen una buena compatibilidad con C++, una integración razonable del depurador y buenas opciones de administración de proyectos. También disfruto las herramientas de refactorización y la integración del control de versiones de origen. Tenga en cuenta que no son tan rápidos y limpios como Visual Studio 6.

Como muchos otros aquí, no me gusta Objective-C, y estoy bastante harto de tener que aprender diferentes entornos/frameworks para cada plataforma I escribir para (uso Linux y OSX diariamente, Windows en ocasiones). Tanto Netbeans como Eclipse son una gran ventaja para la portabilidad. También admiten otros lenguajes que yo uso a veces para proyectos más pequeños (me viene a la mente Python).

+0

¡Muchas gracias! Ya tenía Eclipse, así que solo tuve que instalar el paquete C/C++. Sin embargo, el depurador no puede manejar binarios de 64 bits. El problema parece ser el "analizador binario" y, al buscar en línea, parece que debería tener una opción "analizador Mach-O 64" además del Mach-O habitual. ¿Sabes cómo instalo esto? – Potatoswatter

+0

No lo sé. Lo siento. Debido a mi configuración, solo lo he usado para desarrollar aplicaciones de 32 bits en OSX. Desarrollo en OSX y luego compilo en Linux 64-bit para producción, usando un simple archivo make ... lo siento. Si nada funciona, ¿podría depurar en 32 bits y luego compilar en 64 bits de la misma manera, simplemente usando un archivo MAKE? En cualquier caso, me interesaría saber cómo hacer que el depurador de Eclipse para C++ funcione con aplicaciones de 64 bits en Snow Leopard. Por favor publique si encuentra una manera. Interesante pregunta y me alegra saber que no soy el único a quien no le gusta XCode ... Gracias. – cjcela

2

Tiendo a usar valgrind para errores relacionados con la memoria; gdb (en un horario) cuando quiero una traza inversa; y logging + couts para todo lo demás (si no está fallando, y no hay daños en la memoria, el error parece más fácil).

Admitidamente, no tengo idea de cómo depurar código multihilo.

+0

He encontrado también este truco en tan poco tiempo que permite una depuración más sencilla STL: cd ~ \ n svn co svn: //gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python \ n $ cat ~/.gdbinit \ n \ n pitón import sys \ n sys.path.insert (0, '/ home/USUARIO/Python /') \ n de libstdcxx.v6.printers importar register_libstdcxx_printers \ n register_libstdcxx_printers (Ninguno) \ n end \ n (Voy a hacer una respuesta como parece confusa en un comentario) – baol

0

que añadir a lo que dijo anon que he encontrado también este truco en tan poco tiempo que permite una depuración más sencilla STL:

$ cd ~ 
$ svn co svn://gcc.gnu.org/svn/gcc/trunk/libstdc++-v3/python 
$ cat ~/.gdbinit 
python 
import sys 
sys.path.insert(0, '/home/USERNAME/python/') 
from libstdcxx.v6.printers import register_libstdcxx_printers 
register_libstdcxx_printers (None) 
end 
+0

Aquí hay una fuente única de consejos similares: http://stackoverflow.com/questions/295836/controlling-eclipse -cdt-depurador-salida Sin embargo, parece que tendría t o actualizar GDB ... – Potatoswatter

0

acabo de descubrir cgdb, una interfaz basada en maldición para GDB. Tal vez querrás intentarlo, aunque parece un poco desactualizado. (Jan'10)

Cuestiones relacionadas