Xcode, lldb 및 Python 인터프리터 사이에는 불행히도 대화 형 콘솔에 몇 가지 문제가 있습니다. http://bugreport.apple.com/에 버그 보고서를 보내주십시오.이 문제점에 대한 버그 보고서가 이미 있는지는 잘 모르겠지만 여기에 일반적으로 알려진 문제점은 있습니다. 대화 형 Python 스크립팅 인터페이스를 탐색하는 경우 명령 줄 lldb 도구를 사용할 수 있습니다. 그게 더 잘 작동합니다.
저는 모든 파이썬 스크립트를 lldb 용으로 ~/lldb
에 넣었습니다. 내 ~/.lldbinit
파일에서 나는 그들을 소스. 그게 내가 원하는 거라면 내가 자동으로로드 내 ~/.lldbinit
파일에 command script import
을 둘 것입니다
import lldb
# Use this like
# (lldb) command script import ~/lldb/stopifcaller.py
# (lldb) br s -n bar
# (lldb) br comm add --script-type python -o "stopifcaller.stop_if_caller(frame, 'foo')" 1
def stop_if_caller(current_frame, function_of_interest):
thread = current_frame.GetThread()
if thread.GetNumFrames() > 1:
if thread.GetFrameAtIndex(1).GetFunctionName() != function_of_interest:
thread.GetProcess().Continue()
인 예를 들어, 내가 ~/lldb/stopifcaller.py
있습니다. 이 특별한 예제는 중단 점 # 1에 파이썬 명령을 추가합니다. lldb가 중단 점에서 멈 추면 호출 함수를 볼 것입니다. 호출 기능이 foo
이 아니면 자동으로 실행이 재개됩니다. 본질적으로 중단 점 1은 foo()가 bar()를 호출하는 경우에만 중지됩니다. command script import ~/...
에서 Xcode 4.5 lldb에 문제가있을 수 있습니다. 홈 디렉토리 (/Users/benwad/
또는 무엇이든)의 전체 경로를 입력해야 할 수도 있습니다. 나는 확실히 기억할 수 없다 - 잠시 동안 수정 된 Xcode 4.5의 물결 확장 문제가 있었다.
간단한 유형 요약을 ~/.lldbinit
에 직접 추가 할 수 있습니다. 예를 들어, lldb 자체를 디버깅 할 경우 ConstString
객체는 나에게 관심있는 필드가 하나뿐입니다. m_string ivar.그래서
type summary add -w lldb lldb_private::ConstString -s "${var.m_string}"
이 아니면이 유형 addr_t
있다면, 난 항상 당신이 lldb에 새 명령을 추가하려면 포맷 진수로 내가
type format add -f x lldb::addr_t
을 가지고 싶어, 당신은 파이썬있을 것입니다
import lldb
def say_hello(debugger, command, result, dict):
print 'hello'
def __lldb_init_module (debugger, dict):
debugger.HandleCommand('command script add -f sayhello.say_hello hello')
, ~/lldb/sayhello.py
같은 파일 당신은
처럼 lldb하는 데에로드합니다
당신은 파이썬으로 작성된 명령을 명령 옵션 구문 분석을 수행 할 수 있도록 당신이 shlex
및 optparse
라이브러리를 사용합니다, 그리고 당신은 __doc__
문자열을 추가 할 것입니다을 추가하는 대부분의 시간 - 나는 계속 그 일을 생략 간단한 예.
감사합니다. 나를 시작하게 해주는 매우 유용한 정보. – benwad
'lldb''python' 스 니펫으로 github repo를 가지지 않으십니까? (나는 보았고, 사람을 보지 않았다. .. 시작하는 것은 공상한다?) 나는 그것이 매우 흥미있는 것이라고 생각한다. – trojanfoe
우리는 요리 책 스타일의 문서를 lldb 웹 사이트에 간단한 문제 모음과 해결책을 추가해야 할 필요가 있다고 생각합니다. 아마도 이런 종류의 일에 가장 적합한 장소 일 것입니다. 시간 부족. : ( –