2011-01-18 10 views
7

Estoy escribiendo un programa que hace un uso extenso de vectores y estoy desarrollando con Qt Creator 2.0.1 en Mac OS X 10.6.6 por primera vez.¿Cómo puedo hacer que el depurador de Qt Creator muestre los contenidos de los vectores de C++ en OS X?

Como estoy depuración, puedo ver literales y matrices muy bien en la ventana Locals and Watchers, pero tan pronto como voy a ampliar un vector, en este caso de tipo Student, me sale este árbol:

alt text

La otra persona con la que estoy trabajando está utilizando la misma versión de Qt Creator en Ubuntu y puede ver el contenido de los vectores muy bien. ¿Qué estoy haciendo mal?

Esta es su depurador:

alt text

Respuesta

8

QtCreator 2.6 tiene soporte para Mac FSF GDB (7.5). FSF GDB es compatible con python, lo que permite que qtcreator muestre correctamente QVector, QSet, QList, QString, etc. Se puede descargar desde macports.

  1. descargar e instalar macports (descargar desde aquí http://www.macports.org/install.php)
  2. Para instalar FSF GDB 7.5:

     sudo port install gdb 
    
  3. dar permiso FSF GDB para depurar aplicaciones:

    sudo codesign -s gdb-cert /opt/local/bin/ggdb 
    

    Si no se encuentra gdb-cert, cree un gdb-cert haciendo clic en el siguiente enlace y siga las instrucciones para " La creación de un certificado ":

    http://sourceware.org/gdb/wiki/BuildingOnDarwin

    Si usted no da permiso para ggdb, obtendrá un:

    Unable to find Mach task port for process-id 28885: (os/kern) failure (0x5). 
    (please check gdb is codesigned - see taskgated(8)) 
    
  4. Cambio en el depurador kit QtCreator enter image description here

    Cambie la ruta de/usr/bin/gdb a/opt/local/bin/ggdb

  5. Por defecto, FSF GDB no puede manejar los puntos de interrupción correctamente porque mac clang ++ no exporta símbolos de depuración. Para exportar los símbolos de depuración, dsymutil necesita ejecutarse manualmente.Afortunadamente, el comando dysmutil se puede ejecutar automáticamente después de vincular el programa usando qmake. Añadir las siguientes líneas en el archivo .pro:

    macx { 
        CONFIG(debug, debug|release) { 
         QMAKE_POST_LINK = dsymutil \"MyApp.app/Contents/MacOS/MyApp\" 
        } 
    } 
    
+0

Esto me solucionó el problema por completo. Muchas gracias. – David

+0

¡Muchas gracias! Por cierto, el paso 5 no era necesario para mí. Quizás, lo arreglaron? –

3

Es necesario construir el ayudante de depuración. Debe estar en Herramientas -> Opciones ...

Una vez creado el auxiliar de depuración, puede visualizar std :: string, QString y contenedores también.

Debe haber un botón de reconstrucción en el mismo lugar donde elige qué versión de Qt usar.

http://www.qtcentre.org/threads/31862-quot-No-valid-Qt-version-set.-Set-one-in-Tools-Options-quot-Windows-QtCreator

+0

No son las cadenas que estoy teniendo problemas con el, que es std :: vectores. Puedo ver cadenas, ints, chars y arrays bien. Además, la reconstrucción no ayudó; gracias por la sugerencia, sin embargo. – DanBlakemore

0

Las dos respuestas son especie de derecho: no se puede utilizar los ayudantes de depuración basados ​​en Python en Mac, todavía hay una versión de C++ es que funciona con GDB de Apple.

Cuestiones relacionadas