2016-11-15 2 views
3

고주파 타이머 또는 센서의 값을 디버깅하려면 매 x 번만 발생하는 중단 점을 구성하는 것이 좋습니다. 이것을 달성하는 가장 좋은 방법은 무엇입니까?10 번 째로 LLDB 브레이크 포인트를 설정할 수 있습니까?

Xcode에서 "x 번 중단하기 전에 무시"옵션을 시도했지만 처음으로 작동합니다. LLDB 명령을 사용하여이 카운터를 재설정 할 수 있습니까?

답변

1

당신은이 언제든지 카운터 무시 재설정 할 수 있습니다 참고, 중단 점 w hich는 "ignore count"를 만족하지 못하기 때문에 breakpoint 명령이 실행되지 않습니다. 당신은, 당신은 자동으로 중단 점마다 열 번째 시간을 중지하기를 원한다면 지금 바로 수행

(lldb) break set -l 10 -i 10 -N my_bkpt 
    Breakpoint 1: where = foo`main + 46 at foo.c:10, address = 0x0000000100000f5e 
    (lldb) break com add 
    Enter your debugger command(s). Type 'DONE' to end. 
    > break modify -i 10 my_bkpt 
    > DONE 
    (lldb) 

가 그럼 그냥 충돌 각 정류장에서 "계속"당신이 한 번씩 10 번 브레이크 포인트에 타격을 줄 것으로 예상된다.

참고, 내가 추가 한 중단 점 명령에서 중단 점 번호를 알 필요가 없으므로, 중단 점 (-N 옵션)의 이름을 지정할 수있는 기능을 사용했습니다. 이 중단 점을 명령 파일 등에 저장하는 것이 편리합니다.

+1

Xcode를 사용하는 경우 Xcode의 중단 점 편집기에서 "중단 수정"줄을 중단 점 명령으로 추가하여 동일한 작업을 수행 할 수 있습니다. 이 경우 Xcode는 아직 중단 점의 이름 지정을 지원하지 않으므로 중단 점 번호를 가져야합니다. lldb 콘솔에서 "break list"명령을 실행하여 찾을 수 있습니다. –

0

lldb에서 영구 변수 (카운터)를 정의 할 수 있는지 확실하지 않습니다. 카운터 헬퍼 (counter helper)로 사용하는 하나의 전역 변수를 항상 가질 수 있으며이를 단순히 릴리즈 빌드에 포함시키지 마십시오.

class BrCounter{ 
    static var freq = 10 
} 

편집 중단 점 다음과 같은 조건 추가 :

BrCounter.freq--; 
if(BrCounter.freq == 0){ 
    BrCounter.freq = 10; 
    return true; 
}else{ 
    return false; 
} 

Oneliner :

(lldb) break modify -i <NEW_VALUE> <BKPT_SPECIFICATION> 

:

BrCounter.freq--; if(BrCounter.freq == 0){ BrCounter.freq = 10; return true; }else{ return false; } 
관련 문제