2013-05-01 1 views
1

lldb의 트리 맨을/usr/local/bin에 만들었습니다. xcode가 기본 바이너리 대신이 바이너리를 사용하라고 말하고 싶습니다. 그러나 어떻게 설정해야하는지/어디에서 설정해야하는지 알 수 없습니다.xcode로 tree lldb를 사용하십시오.

+0

왜이 작업을 수행 하시겠습니까? 어떤 이유로 LLDB가 작동하지 않습니까? – danielbeard

+0

svn에서 clang을 사용하고 며칠 동안 Xcode의 디버그보기에서 프레임 변수를 볼 때 Xcode가 손상되었습니다. – monamimani

답변

5

불행히도 이것은 작동하지 않습니다. Xcode 4.6.x에서 lldb-179가 분기 된 이후 (2012 년 초 12 월) svn 저장소 lldb에 몇 가지 API가 변경되었습니다. 현재의 svn에서 빌드 된 LLDB.framework/Applications/Xcode.app/Contents/SharedFrameworks/에 넣으면 디버깅을 시도 할 때 Xcode가 충돌합니다.

배경으로 lldb는 실제로 디버거입니다. 라이브러리입니다. lldb 라이브러리는 Mac OS X에서 LLDB.framework이며, 드라이버 프로그램과 링크됩니다. 명령 줄 "lldb"프로그램은 하나의 드라이버이며, Xcode는 다른 드라이버입니다. 앞으로 추가적인 드라이버 프로그램이있을 수 있습니다. 우리는 때때로 "llgdb"에 대해 농담을합니다. 드라이버 프로그램은 & gdb의 느낌을 가지고 있지만 lldb 라이브러리를 사용하여 모든 작업을 수행합니다.

lldb 라이브러리는 드라이버 프로그램에서 코드를 작성하거나 링크하는 API를 제공합니다. 이것은 C++ API입니다. 이 시점에서 장기간 안정적으로 사용하기위한 것은 아닙니다. 때때로 기존 방법을 변경해야하고 드라이버 프로그램을 최신 버전과 업데이트/다시 연결해야합니다. 이 때문에 12 월 초의 lldb (Xcode 4.6.x)에 링크되도록 컴파일 된 드라이버 프로그램 (Xcode)이 최신 LLDB.framework에 포함되면 중단됩니다. API는 12 월 이후로 몇 번 호환되지 않는 방식으로 변경되었으므로 Xcode를 섞으려고하면 Xcode가 충돌합니다.

Xcode 4.6에 포함 된 것과 동일한 lldb-179 lldb를 얻기 위해 svn에서 체크 아웃 할 수있는 정확한 개정이 없습니다. 그 릴리스에 태그를 지정할 시간이 왔을 때 lldb의 안정적인 버전을 선택하여 사과 내부 저장소로 가져 왔습니다. 1212 년 12 월 1 일경이었고 거기에서 나온 모든 수정은 lldb-179와 구별되지 않을 것입니다. 그 이후로 Xcode 4.6/lldb-179에 대한 몇 가지 사소한 업데이트가있었습니다. lldb-179.1, lldb-179.2 등이 있습니다. 이것들은 애플의 내부 브랜치에서 만들어지며, lldb-179와 나중에 공개 svn 저장소의 체리 픽 픽스가 몇 개 있습니다.

LLDB.framework이 제공하는 C++ API 외에도 lldb도 "SB API"를 제공한다는 점이 흥미 롭습니다. 이것은 파이썬 스크립팅 인터페이스의 용어입니다. 실제 디버거 드라이버 프로그램을 파이썬으로 작성하여 SB API를 사용하여 배후에서 실제 디버거 작업을 수행 할 수 있습니다. 이 python API는 LLDB.framework과 직접 링크 할 때 C++ API보다 안정적이지만 향후 설계 결정을 다시해야 할 경우 때때로 변경해야합니다.

제쳐두고, 올바르게 svn lldb에 대해 Xcode 4.6을 링크 할 수 없게 만든 첫 번째 API 변경 사항이 1 월 또는 2 월에 커밋되었음을 기억하십시오. 어떤 방법은 int을 복용하고 uint64_t 또는 그 라인을 따라 무엇인가를 가져 가야했습니다. 이것들은 C++ 메소드이므로 변경된 함수의 이름이 변경되고 Xcode는 새로운 버전의 lldb에 대해 링크를 계속하기 위해 재 컴파일되어야했습니다.

+0

SB API는 무엇을 의미합니까? – monamimani

+0

오픈 소스 소스 기반에서 분기 된 사과가 xcode와 더 이상 호환되지 않는다는 것을 의미합니까? 또는 lldb 소스와의 역 호환이되지 않으며 다음 업데이트에서 동기화 될 것입니다. – monamimani

+0

SB는 스크립팅 브리지를 의미합니다. 기본적으로 "LLDB public API"와 같습니다. LLDB는 C++ API를 제공합니다. 그 중 큰 부분은 SWIG를 통과하여 파이썬 계층 인 "SB"를 생성합니다. 즉 모든 LLDB API 객체의 이름이 SB_something_입니다 (예 : SBProcess, SBType , ...) –

0
다음과 같은 폴더 /Applications/Xcode.app/Contents/Developer/usr/bin 에 lldb 바이너리를 교체 시도 할 수

하거나 하나 비공식 기능이 작동 라이브러리 빌드 경우 /usr/bin/lldb

, 나는이 시도하지 않은 나는 확실하지 않다 Xcode.

+0

lldb는 실제로 디버거 라이브러리 인 'LLDB'입니다.framework'는 실제 디버거입니다. lldb 명령 행 프로그램은'LLDB.framework'를 사용하여 프로그램을 디버그하는 도구입니다. Xcode는 또 다른 것입니다. 커맨드 라인 디버깅 만하고 싶다면 lldb 커맨드 라인 프로그램과'LLDB.framework'를 함께 사용하십시오 (API 비 호환성 문제를 피하기 위해). svn top-of-tree lldb 명령 행 프로그램을'/ Applications/Xcode.app'에 복사하는 것은 당신이 의도 한대로하지 않을 것입니다 - 프레임 워크와 lldb는 함께 복사 (그리고 호환 가능) 될 필요가 있습니다. 또한 Xcodde도 호환되어야합니다. –

+0

나는 그것이 사실일지도 모른다라고 생각했다. 추가 정보를 주셔서 감사합니다, 나는 llvm 웹 사이트에서 많은 것을 찾지 못했습니다. 내가 볼 수있는 관련 링크가 있습니까? – danielbeard

+0

http://lldb.llvm.org는 lldb 세부 정보의 일반적인 출발점입니다. –