반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- UIButton
- Remot Push
- ios
- 연산 프로퍼티
- weak
- IBOutlet
- RunLoop
- entrypoint
- AppTransportSecurity
- CoreLocation
- uikit
- DispatchQueue
- property wrapper
- WWDC16
- 진입점
- TableView
- Understanding Swift Performance
- 후행 클로저
- OperationQueue
- SWiFT
- 동시성프로그래밍
- 트레일링 클로저
- for-in
- Choosing Between Structures and Classes
- tableViewCell
- userdefaults
- 원격 푸시
- viewcontroller
- firebase
- IBOutletCollection
Archives
- Today
- Total
iOS 공부하는 감자
Day15) Xcode 디버깅 본문
반응형
디버깅 사용법
BreakPoint
- 원하는 라인에서 실행중인 앱을 일시정지 하는 포인트
- 라인 번호를 클릭하면 파란색으로 표시되면서 BreakPoint가 생긴다.
4번 라인까지 실행되고 중단한다. BreakPoint를 다시 누르면 비활성화 상태가 된다. - BreakPoint는 마우스 드래그를 통해 제거하거나 옮길 수 있다.
네비게이터에서 현재 설정되어 있는 BreakPoint들을 한번에 확인할 수 있다. - Xcode 하단의 Debugging Area에서는 디버깅 중 일시 정지된 BreakPoint에서의 현재 변수 상태를 확인할 수 있다.
만약 5번 라인에 BreakPoint를 설정한다면
5번 라인을 실행하고 멈추는게 아니라 4번 라인까지 실행하고 5번 라인을 실행하기 전 일시정지된다.
Control Flow
- 디버깅의 흐름을 제어하는 방법은 3가지가 있다.
- 다음 BreakPoint로 넘어가는 방법 : Pause/continue execution
- 다음 코드(라인)이 실행되게 하는 방법 : Step over
- 진입 포인트가 있을 때 진입하는 방법 : Step into, Step out
가장 왼쪽의 Disable/enable breakpoints는 모든 BreakPoint를 활성화/비활성화 할 수 있다.
왼쪽 사진과 같이 21번 라인에 BreakPoint를
설정하고 Control Folw를 할 때
1. Pause/continue execution
print()까지 실행하고 종료된다.
2. Step over
다음 라인인 print(someInt)로 넘어간다.
3. Step into / Step out
함수가 구현된 부분으로 이동하여 내부 진행 과정을 확인할 수 있다. (Step out으로 빠져나올 수 있다.)
(lldb)
디버깅을 사용중일 때 콘솔창에는 (lldb)라는 글자가 나온다
lldb는 소프트웨어 디버깅 도구이며, 디버깅 명령어를 통해 변수값을 조회하거나 프로그램을 수정할 수도 있다.
p : 현재 메모리 상태에 있는 것을 프린트한다.
메서드를 실행시키거나 연산을 수행하고 그 결과를 볼 수도 있다.
expr : 현재 상태에서 에디터에 코드를 추가 작성하는 것과 같은 역할을 수행한다.
<<-- $number 이라는 새로운 변수를 생성하고, 기존 변수에 += 연산을 수행
현재 상태에서 원하는 변경 사항들을 변경하고, 다음 스텝으로 넘어가면 변경 내용들이 그대로 적용된다.
<<-- print() 등 에디터에서 사용 가능한 것을 그대로 쓸 수 있다.
반응형
'22 베이직 챌린지' 카테고리의 다른 글
Day20) Big-O (0) | 2022.01.22 |
---|---|
Day19) HIG (Human Interface Guidelines) (0) | 2022.01.21 |
Day14) 객체지향 프로그래밍 (0) | 2022.01.16 |
Day13) 타입캐스팅 (0) | 2022.01.15 |
Day12) 옵셔널 (0) | 2022.01.14 |