2013-06-21 3 views
1

A는 Xcode에 사용자 정의 LLDB 유형 요약을 추가하는 방법에 대해 잠시 후 a question을 게시했습니다. 나는 파이썬 스크립트를 로딩함으로써 그렇게 할 수 있다는 것을 알았다.여러 lldb 유형 요약 파일을 어떻게로드합니까?

그러나 여러 파이썬 파일을로드 할 수있는 방법이 있는지 알고 싶습니다. 여러 프로젝트에서 작업하므로 모든 프로젝트에서 사용되는 일반적인 유형에 대한 요약 파일 1 개와 프로젝트 별 유형에 대한 요약 파일 1 개가 있어야합니다.


~/MyGenericSummaries.py

import lldb 

def __lldb_init_module(debugger, dictionary): 
    debugger.HandleCommand('type summary add --summary-string "these are words" MyGenericClass'); 

~/MyProjectSummaries.py

import lldb 

def __lldb_init_module(debugger, dictionary): 
    debugger.HandleCommand('type summary add --summary-string "these are more words" MyProjectClass'); 

는 ~/.lldbinit


command script import ~/MyGenericSummaries.py 
command script import ~/MyProjectSummaries.py 
이 MyProjectSummaries.py의 유형 요약을로드하지 - LLDB은

error: module importing failed: module already imported

는 일반적인 요약 및 프로젝트 요약을 유지하는 것이 가능 하더군요 개별 파일에? 다른 프로젝트 사이에서 충돌하는 일부 형식 이름이 있기 때문에 이것은 실제로 도움이 될 것입니다. 그래서 이것을 분리하려고합니다.


~/MyGenericSummaries.py

import lldb 

def doLoad(debugger, dictionary): 
    debugger.HandleCommand('type summary add --summary-string "these are words" MyGenericClass'); 

def __lldb_init_module(debugger, dictionary): 
    doLoad(debugger, dictionary); 

:

많은 감사합니다 :)

답변

1

좋아, 파이썬 마법의 비트와 함께 ... 그것을 가지고 ~/MyProjectSummaries.py

import lldb 
from MyGenericSummaries import doLoad 

def __lldb_init_module(debugger, dictionary): 
    doLoad(debugger, dictionary); 
    debugger.HandleCommand('type summary add --summary-string "these are more words" MyProjectClass'); 

~/.lldbinit

command script import ~/MyProjectSummaries.py 

유일한 단점은 내가 .lldbinit을 조정할 내가 프로젝트를 전환 엑스 코드 매번 다시 시작해야합니다,하지만 뭔가라는 것이다 I 함께 살 수 있습니다.

+0

은 'Handle Command'에 들어가는 것에 대한 더 이상의 문서를 발견했습니다. – carbonr

1

원본 코드가 작동하지 않는 이유가 명확하지 않습니다. 당신이 인용 한 것에서부터 나는 그것을 기대합니다.

~/.lldbinit 파일에 확실히 command script import 개의 파이썬 파일을 여러 개 만들 수 있습니다. 저는 항상 그렇게합니다. 오류 메시지에서 이미 ~/.lldbinitcommand script import ~/MyProjectSummaries.py 명이있는 것으로 보입니다.Xcode가 실행될 때 ~/.lldbinit-Xcode을 조심하십시오 (명령 행 lldb가 사용되는 경우 ~/.lldbinit-lldb) 일반적인 형식은 lldb가 사용되는 모든 것에 대해 ~/.lldbinit-DRIVER_NAME입니다.이 기능은 특정 설정을 사용하려는 경우 유용합니다 예를 들어, lldb 라이브러리가 Xcode 내에서 사용될 때만 가능합니다.

type summary 항목을 프로젝트별로 그룹화 할 수 있습니다. type summary list을 수행하면 내장 된 요약이 libcxx, VectorTypes, CoreGraphics 등의 범주로 그룹화되어있는 것을 볼 수 있습니다. 이러한 요약 그룹은 type category enable|disable|list|delete으로 활성화 또는 비활성화 할 수 있습니다.

명령 줄 lldb는 실행중인 현재 작업 디렉토리에서 .lldbinit을 읽습니다. 그러나 Xcode의 경우에는 도움이되지 않지만이 명령 줄은 .lldbinit으로 실행됩니다. 지금하고있는 일에 대해 프로젝트 별 lldbinit 파일이 정말로 필요합니다. 이 유형 요약을 ~/.lldbinit 파일에 추가 한 경우 프로젝트 별 lldbinit는이 프로젝트에 대해 올바른 유형 요약을 활성화/비활성화 할 수 있습니다. Xcode에는 이와 같은 기능이 없습니다.