2009-06-19 9 views
5

Para ayudar a simplificar la depuración de some custom Objective-C objects en la ventana del depurador Xcode, he creado un conjunto de cadenas de formateador de datos para cada uno de los objetos, usando related Apple documentation y Xcode's built- en formateadores de datos como una guía.Creando un paquete formateador de datos Xcode para objetos Obj-C personalizados

My custom summary strings trabajo grande si lo pongo en /desarrollador/Library/Xcode/CustomDataViews/ con los formateadores de datos que se suministran con Xcode. Sin embargo, prefiero no hacerlo ya que un usuario puede no tener privilegios de escritura en ese directorio, y mezclar formateadores personalizados con los integrados puede ser confuso. Del mismo modo, agregar mis propias entradas al ~/Library/Application Support/Apple/Developer Tools/CustomDataViews/CustomDataViews.plist también funciona, pero ese archivo es para valores definidos por el usuario que anulan los valores predeterminados y sus entradas son afectadas por cambios en la interfaz gráfica de depuración de Xcode. Lo que realmente quiero es poder colocar un archivo con mis formateadores de datos en una ubicación para que Xcode los reconozca, pero los usuarios aún pueden anular selectivamente mi configuración (en otro archivo) si lo desea.

El problema es que cuando creo un paquete (siguiendo el ejemplo de this Apple sample code) e instalarlo (ya sea en /desarrollador/Library/Xcode/CustomDataViews/ o cualquier Library/Application Support/Apple/Herramientas de Desarrollo/CustomDataViews/ ruta), Xcode no reconoce ni utiliza los formateadores personalizados.

La documentación sobre los detalles de los paquetes de datos formateador es algo escasa (en su mayoría un archivo de cabecera única en Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin), posiblemente debido a que la funcionalidad no es una de las características de titular de Xcode. ;-) Cualquier ayuda sería muy apreciada.

Respuesta

4

Recientemente he podido volver sobre esto y creo que he encontrado la respuesta.

Ya sabía que un paquete de formateador de datos debe incluir el archivo de lista de propiedades internamente, llamado "Contenidos/Recursos/*. Plist". Sin embargo, para que el paquete realmente funcione, también debe incluir un ejecutable con el mismo nombre que el paquete en el directorio Contenidos/MacOS/. Por lo que puedo decir, incluso un archivo foo.c completamente vacío es suficiente siempre y cuando compile y vincule un archivo binario. Ni siquiera tuve que tocar el Info.plist para un proyecto de stock CFPlugin Bundle en Xcode, solo incluya CustomDataViews.plist en los recursos de destino.

Como no necesito definir las funciones C para mostrar ninguno de los objetos y estructuras con los que estoy tratando, el enfoque más sencillo es simplemente poner el archivo plist (cualquier nombre servirá - el mío es CHDataStructures.plist) en uno de dos lugares:

  • ~/Library/Application Support/Developer/Shared/Xcode/CustomDataViews/
  • /Library/Application Support/Developer/Shared/Xcode/CustomDataViews/

archivos plist simple son más pequeños, triviales para crear y fácil de modificar. Además, a diferencia de cuando usé paquetes, no tuve que reiniciar Xcode cuando agregué, eliminé o modifiqué el plist; el solo inicio de una nueva sesión de depuración fue suficiente para causar que se actualizaran los formateadores de datos. Creo que solo estaba creando un paquete porque eso es lo que muestra el código de muestra, pero no puedo determinar ninguna ventaja para mi escenario, así que me quedo con el plist.

+0

Como señaló, no es * necesario * para que funcione, pero probablemente sea una buena práctica declarar un puntero de tipo '_pbxgdb_plugin_function_list *' con el símbolo '_pbxgdb_plugin_functions', incluso si está vacío. – ELLIOTTCABLE

2

A partir de Xcode 2.5 y 3.0, las ubicaciones para tales cosas han cambiado para admitir múltiples versiones de Xcode que coexisten en un sistema. Debe poner sus formateadores de datos personalizados en el directorio "Library/Application Support/Developer/Shared/CustomDataViews" en el dominio local (/) o el usuario (~); entonces deberían estar disponibles la próxima vez que inicie Xcode.

El Shared en la ruta anterior puede ser un número de versión como 3.0 o 3.1 si está creando algo específico para una versión de Xcode en particular.

+0

Es bueno saber el cambio (y el razonamiento detrás de esto), pero todavía no puedo hacer que funcione en el dominio local o de usuario. Estoy seguro de que esas son las ubicaciones correctas, pero recuerde que el paquete no funciona en/Developer/Library/Xcode/CustomDataViews/tampoco. Ahora cuando depuro con el paquete en la ubicación incorporada, causa un error interno en Xcode. Parece ser un problema con el paquete en sí. –

+0

Al final conseguí ambos paquetes y listas plisadas para trabajar en Biblioteca/Application Support/Developer/Shared/Xcode/CustomDataViews/(observe el "Xcode" en la ruta). Probablemente sea solo un error tipográfico, pero probablemente no habría encontrado el camino correcto sin su ayuda. ¡Gracias! :-) –

Cuestiones relacionadas