2009-06-19 8 views
5

Xcode 디버거 창에서 some custom Objective-C objects의 디버깅을 단순화하는 데 도움이되도록 related Apple documentation 및 Xcode의 내장 함수를 사용하여 각 오브젝트에 대한 데이터 포맷터 문자열 세트를 작성했습니다. 가이드로서 데이터 포맷터에서.사용자 정의 Obj-C 오브젝트 용 Xcode 데이터 포맷터 번들 만들기

My custom summary strings Xcode와 함께 제공되는 데이터 포맷터가있는 /Developer/Library/Xcode/CustomDataViews/에 넣어두면 멋지게 작동합니다. 그러나 사용자가 해당 디렉토리에 대한 쓰기 권한을 갖고 있지 않아서 사용자 정의 포매터를 내장 된 포매터와 혼합하는 것이 혼란 스러울 수 있기 때문에 나는 그렇게하지 않을 것입니다. 마찬가지로, 자신의 항목을 ~/Library/Application Support/Apple/Developer Tools/CustomDataViews/CustomDataViews.plist에도 추가하지만 그 파일은 기본값을 덮어 쓰는 사용자 정의 값을위한 것이고 변경 사항에 의해 항목이 겹쳐서 표시됩니다 Xcode 디버거 GUI에서. Xcode에서 인식 할 수 있도록 위치에 데이터 포맷터가있는 파일을 배치 할 수 있지만 원하는 경우 사용자가 내 설정을 다른 파일에 선택적으로 우선 적용 할 수 있습니다.

문제는 그 내가 (this Apple sample code의 예를 다음) 번들을 생성하고 (이를 설치할 때 하나 /Developer에서/도서관/엑스 코드/CustomDataViews/ 또는 라이브러리/응용 프로그램 지원/애플/개발 도구/CustomDataViews/ 경로) Xcode는 사용자 지정 서식 파일을 인식하거나 사용하지 않습니다. 데이터 포맷 번들의 세부 사항에 대한 문서

다소 빈약하다 (Xcode.app/Contents/PlugIns/GDBMIDebugging.xcplugin의 대부분은 하나의 헤더 파일) 기능은 주요 기능 중 하나가 아닌 가능성이 있기 때문에 Xcode의 ;-) 어떤 도움을 주시면 대단히 감사하겠습니다.

답변

4

최근에 나는이 문제에 다시 돌아 왔으며, 나는 그 답을 발견했다고 생각한다.

데이터 포맷터 번들에는 "Contents/Resources/*. plist"이라는 속성 목록 파일이 내부적으로 포함되어야한다는 것을 이미 알고있었습니다. 그러나 번들이 실제로 작동하려면 Contents/MacOS/ 디렉토리에 번들과 같은 이름의 실행 파일도 있어야합니다. 내가 알 수있는 한, 바이너리를 컴파일하고 링크하는 한 완전히 비어있는 foo.c 파일로도 충분합니다. Xcode에서 CFPlugin Bundle 프로젝트의 Info.plist를 터치 할 필요조차 없으며 대상 리소스에 CustomDataViews.plist를 포함하기 만하면됩니다.

개체 및 내가 다루고있는 구조체를 표시하는 C 함수를 정의 할 필요가 없으므로 훨씬 쉬운 방법은 plist 파일을 넣는 것입니다 (모든 이름은 - CHDataStructures.plist). 두 위치 중 하나를

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

간단한 PLIST 파일을 만들 사소한, 작은, 수정하기가 더 쉽습니다. 또한 번들을 사용할 때와 달리 plist를 추가, 제거 또는 수정할 때 Xcode를 다시 시작할 필요가 없었습니다. 새로운 디버깅 세션을 시작하는 것만으로도 새로운 데이터 포맷터를 업데이트 할 수있었습니다. 샘플 코드에서 보여준 것이므로 번들을 생성하는 것만 같았지만 시나리오에 따른 이점을 결정할 수는 없으므로 plist를 사용하고 있습니다.

+0

당신이 지적했듯이, 그것이 작동하기 위해 * 반드시 필요한 것은 아니지만, 그것이 비어 있더라도'_pbxgdb_plugin_functions' 기호로'_pbxgdb_plugin_function_list *'유형의 포인터를 선언하는 것이 가장 좋습니다. – ELLIOTTCABLE

2

Xcode 2.5 및 3.0부터는 이러한 시스템의 위치가 하나의 시스템에서 공존하는 여러 버전의 Xcode를 지원하도록 변경되었습니다. 맞춤 데이터 형식을 로컬 (/) 또는 사용자 (~) 도메인의 "Library/Application Support/Developer/Shared/CustomDataViews"디렉토리에 저장해야합니다. 다음에 Xcode를 시작할 때 사용할 수 있어야합니다.

위 경로의 Shared은 특정 Xcode 버전과 관련된 항목을 만들 경우 3.0 또는 3.1과 같은 버전 번호가 될 수 있습니다.

+0

변경 사항 (및 그 이유)을 알고있는 것이 좋지만 로컬 또는 사용자 도메인에서 변경할 수는 있습니다. 그것들이 올바른 위치에 있다고 확신하지만 번들은/Developer/Library/Xcode/CustomDataViews/중 하나에서 작동하지 않습니다. 이제 내장 위치에서 번들로 디버깅 할 때 Xcode에서 내부 오류가 발생합니다. 번들 자체에 문제가있는 것 같습니다. –

+0

결국 라이브러리/응용 프로그램 지원/개발자/공유/Xcode/CustomDataViews /에서 작업 할 번들과 베어 plists를 모두 얻었습니다 (경로의 "Xcode"참고). 아마도 단순한 오타가 있었을 지 모르지만 나는 도움없이 올바른 경로를 찾지 못했을 것입니다. 감사! :-) –