2014-07-13 1 views
1

이 거대한 LLDB 파이썬 참조 설명서를보고 있었는데 여전히 내 코드에서 중단 점을 처리하는 방법을 찾을 수 없습니다. 내 말은, 일부 중단 점에 도달했을 때 foo()를 실행하고 싶습니다.lldb 파이썬 핸들 중단 점 히트

일부 코드 스 니펫을 도와주세요!

파이썬 참조 설명서에서 필요한 클래스를 알려주십시오.

고맙습니다. 페이지에

답변

2

:

중단 점 유용한 정보를 가지고

을 당한다 때 파이썬 스크립트를 실행 :라는 제목의 섹션이

http://lldb.llvm.org/python-reference.html

.

당신이하고있는 일은 "브레이크 포인트에 명령 추가하기"입니다. 이에 대한 lldb 명령은 "breakpoint command add"입니다. 모든 기본 lldb 명령은 "noun [sub-noun [...]] verb options"; 그것이 당신이하고 싶은 일에서 그 명령에 대한 명령을 어디에 놓아 두 었는지를 알 수 있습니다. 어쨌든, "중단 점 명령 추가"에 대한 도움말은 유용 할 수있는 다른 예제가 있습니다.

breakpoint_function (frame, bp_loc, dict) 

명령으로 lldb에 해당 모듈을 가져와 :

(lldb) command script import "path to your .py file" 

또한 모듈 이름을 사용할 수 있습니다

그런 다음 압축 된 버전이 서명 기능을 포함하는 파이썬 모듈을 만들 것입니다 PYTHONPATH를 가리 키도록 설정 한 경우 "명령 스크립트 가져 오기"에서 필요하지만 파이썬의 "가져 오기"와 달리이 명령은 사용자를 대신하여 처리합니다.

그런 다음 중단 점을, 그리고에 기능을 추가하는 "카 닷컴 A"를 사용

(lldb) BR COM 전자 -F MyModule.breakpoint_function 이제 중단 점을 당한다 때

, 당신의 함수는 다음 인수로 호출됩니다.

"frame"인수는 중단 점에 도달 한 프레임입니다. 프레임 &에서 스레드를 얻을 수 있으므로 필요에 따라 전체 스택을 얻을 수 있습니다.

"bploc"인수는 중단 점을 치는 "중단 점 위치"입니다. lldb에서 "breakpoint specification"("break set"으로 설정 한 것)은 여러 위치로 해석 될 수 있습니다. 예를 들어 "소스 패턴"중단 점은 코드의 여러 소스 패턴과 일치 할 수 있습니다. 그래서 어느 것이 실제로 타격되었는지 알고 싶을 것입니다.

"dict"옵션은 일부 다람쥐를 다람쥐로 만들고 파이썬에 전달할 수 있도록 남겨 두어야합니다.

"스크립트"명령으로 액세스 할 수있는 스크립트 인터프리터는 lldb.thread, lldb.frame 등 편의 변수를 정의하지만 이러한 변수는 중단 점 명령이 실행될 때 설정되지 않습니다. 달리는.따라서 명령을 프로토 타이핑하는 동안 스크립트 인터프리터에서 이러한 변수를 사용한 경우 중단 점 명령에서 필요로하는 경우 전달 된 프레임에서 해당 변수를 찾아야합니다.

파이썬 중단 점 명령은 현재 Xcode 6에서 작동하지 않습니다.하지만이 작업은 완료 될 때까지 수정해야합니다.

+0

감사합니다. 이것은 좋은 옵션입니다. 그것은 잘 작동합니다. 그래도 PaiMei와 같은 순수한 파이썬 솔루션을 찾고있었습니다. 하지만이게 효과가있어, 고마워! – RIO

+1

아, 미안, 나는 그것을 얻지 않았다. 최근 lldb의 기능 : SBBreakpoint.SetScriptCallbackFunction. 그래서 SBTarget.BreakpointCreateBy ...로 파이썬에서 중단 점을 만든 다음 파이썬 함수 (모듈 포함)의 전체 이름을 전달하여 중단 점에서 SetScriptCallbackFunction을 호출하십시오. 정확히 언제 추가되었는지 기억이 나지 않습니다. 코드가 Xcode에 있습니다. 6 및 lldb.llvm.org의 현재 TOT lldb. Xcode 5에 있었습니까? 어느 시점에서 파이썬 호출 가능 버전을 만드는 방법을 알아낼 것이지만, 지금은 그 이름이해야합니다. –