2009-06-19 2 views
5

Чтобы упростить отладку some custom Objective-C objects в окне отладчика Xcode, я создал набор строк форматирования данных для каждого из объектов, используя related Apple documentation и встроенный Xcode, в форматах данных в качестве руководства.Создание пакета форматирования данных Xcode для пользовательских объектов Obj-C

My custom summary strings работы замечательно, если я положил его в /Developer/Library/Xcode/CustomDataViews/ с форматтеров данных, которые поставляются с Xcode. Тем не менее, я бы предпочел не делать этого, поскольку пользователь может не иметь права на запись в этот каталог, и смешивание пользовательских форматировщиков со встроенными может сбить с толку. Точно так же добавляются мои собственные записи в ~/Библиотека/Поддержка приложений/Apple/Инструменты для разработчиков/CustomDataViews/CustomDataViews.plist также работает, но этот файл предназначен для пользовательских значений, которые переопределяют значения по умолчанию, а его записи сбрасываются изменениями в графическом интерфейсе отладчика Xcode. Я действительно хочу, чтобы я мог разместить файл с моими форматировщиками данных в месте, поэтому Xcode распознает их, но пользователи могут по-прежнему выборочно переопределять мои настройки (в другом файле), если это необходимо.

Проблема заключается в том, что когда я создаю связку (следуя примеру this Apple sample code) и установить его (либо в /Developer/Library/Xcode/CustomDataViews/ или любой Library/Application Support/Apple/Инструменты разработчика/CustomDataViews/), Xcode не распознает или не использует пользовательские форматы.

Документация по специфике форматирования данных пучков несколько скудный (в основном один файл заголовка в Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin), возможно, потому, что функциональность не одна из основных характеристик Xcode. ;-) Любая помощь будет принята с благодарностью.

ответ

4

Я недавно смог вернуться к этому, и я считаю, что нашел ответ.

Я уже знал, что пакет форматирования данных должен включать файл списка свойств внутри, с именем «Содержание/Ресурсы/*. Plist». Однако для того, чтобы пакет действительно работал, он также должен включать в себя исполняемый файл с таким же именем, как комплект в каталоге Содержание/MacOS/. Насколько я могу судить, даже вполне пустой файл foo.c является достаточным, если вы компилируете и связываете двоичный файл. Мне даже не пришлось прикоснуться к Info.plist для проекта CFPlugin Bundle в Xcode, просто включите CustomDataViews.plist в целевые ресурсы.

Поскольку мне не нужно определять функции C для отображения каких-либо объектов и структур, с которыми я имею дело, гораздо более простой подход - просто поместить файл plist (любое имя будет делать - my is CHDataStructures.plist) в один из двух мест:

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

Простого Plist файлы меньше, тривиальных для создания и легче изменить. Кроме того, в отличие от использования пакетов, мне не пришлось перезапускать Xcode, когда я добавлял, удалял или изменял plist; просто запуск нового сеанса отладки был достаточным для того, чтобы новые форматы данных были обновлены. Я думаю, что я только создавал пакет, потому что это то, что показал пример кода, но я не могу определить никаких преимуществ для моего сценария, поэтому я придерживаюсь plist.

+0

Как вы указали, это не * необходимо * для его работы, но, вероятно, лучше всего объявить указатель типа '_pbxgdb_plugin_function_list *' символом '_pbxgdb_plugin_functions', даже если он пуст. – ELLIOTTCABLE

2

Начиная с Xcode 2.5 и 3.0 места для таких вещей были изменены для поддержки нескольких версий Xcode, сосуществующих в одной системе. Вы должны поместить свои пользовательские форматированные данные в каталог «Library/Application Support/Developer/Shared/CustomDataViews» либо в локальный(), либо в домен пользователя (~); то они должны быть доступны при следующем запуске Xcode.

Shared На пути выше может быть номер версии, такой как 3.0 или 3.1, если вы создаете что-то конкретное для конкретной версии Xcode.

+0

Хорошо знать об изменениях (и о причинах, лежащих в его основе), но я все равно не могу заставить его работать ни в локальном, ни в домене пользователя. Я уверен, что это нужные места, но помните, что пакет не работает в/Developer/Library/Xcode/CustomDataViews /. Теперь, когда я отлаживаю пакет во встроенном расположении, он вызывает внутреннюю ошибку в Xcode. Кажется, это проблема с самой связкой. –

+0

В итоге я получил как пучки, так и голые плиты для работы в библиотеке/поддержке приложений/Developer/Shared/Xcode/CustomDataViews/(обратите внимание на «Xcode» на пути). Вероятно, просто простая опечатка, но я, вероятно, не нашел бы правильный путь без вашей помощи. Благодаря! :-) –

Смежные вопросы