나도 Xcode 잘 사용하고 싶다!!!
디버깅을 위한 Xcode 활용 방법
LLDB
po 명령어
•
디버깅에서 가장 널리 사용되는 방법
•
breakpoint를 기점으로 변수에 어떤 값이 저장되어 있는지 알 수 있다.
•
LLDB에서 po { 변수 } 를 입력하면 변수에 대한 description이 출력된다.
◦
property 접근도 가능
•
런타임 때 변수값을 직접 수정할 수 있다.
변수 생성
•
LLDB에서 런타임 때 직접 변수를 생성하고 사용할 수 있다.
•
po var ${변수명} = {value}
breakpoint
breakpoint 생성 및 제거
•
코드 왼쪽 라인을 클릭하면 breakpoint를 생성할 수 있다.
◦
이렇게 생성한 breakpoint를 line breakpoint라고 부른다.
◦
코드 라인 그 자체에 breakpoint를 생성하는 것
•
생성한 breakpoint를 드래그해서 밖으로 끄집어내면 breakpoint를 제거할 수 있다.
Edit Breakpoint
•
생성한 breakpoint를 더블클릭하면 Edit Breakpoint 창이 뜬다.
•
Name : breakpoint에 네이밍 지정할 수 있다.
•
Condition : 특정 조건일 때만 break가 걸린다 (Swift 문법으로 작성)
•
Ignore : 특정 횟수 이후부터 break가 걸린다
•
Action: break 걸리기 전, 특정 동작을 수행한다 (LLDB 명령어, script, Sount 등등)
•
Automatically continue after evaluating actions
◦
Edit Breakpoint에 설정한 동작은 수행하지만, break가 걸리진 않는다
•
Automatically continue after evaluating actions가 체크되었기 때문에 Action 수행 후 break가 걸리지 않는다.
Column Breakpoint
•
column breakpoint는 line breakpoint와는 다르게 코드 라인 중 특정 부분에 breakpoint를 생성하는 것이다.
•
breakpoint를 걸 곳에 command + 클릭 > Create Column Breakpoint로 생성할 수 있다.
watchpoint
•
어쩔때는 변수값이 언제 어디서 바뀌는지 알고 싶을 때가 있다. 하지만 로직이 복잡할수록 어디서 변하는지 일일히 체크하키는 쉽지 않다.
•
watchpoint는 변수값이 수정되는 곳에 일일히 breakpoint를 만들지 않아도 break가 걸리도록 해준다.
•
일단 트래킹 하고 싶은 변수가 처음 생성되거나 사용되는 곳에 breakpoint를 걸어준다.
•
앱 실행 후 break가 걸리면 아래 콘솔 왼쪽 화면에서 트래킹할 변수를 오른쪽 클릭하고 “Watch {변수}” 를 클릭 해준다.
•
이제 변수값이 수정되면, 수정하는 곳에 break가 걸리게 된다.
Network
Network Condition
•
서버 요청/응답이 필요한 앱의 경우 여러 네트워크 상태에 대해서 테스트가 필요하다
◦
네트워크가 좋지 않을 경우, 네트워크가 끊겼을 경우 앱의 동작 확인 등등,,
◦
Xcode > Window > Devices and Simulator > DEVICE CONDITIONS 에서 네트워크 상태를 조절할 수 있다.
◦
네트워크 10% 유실 뿐만 아니라 2G, 3G 환경 등등 다양하게 선택 가능하다.
Network Instrument
•
서버 요청/응답에 대한 정보를 알고 싶을 때 유용
◦
iOS 15 이상 디바이스에서만 확인이 가능하다 (시뮬레이터는 불가능)
◦
Instruments 앱을 실행하고 Network 를 선택
•
녹화 버튼 눌러준다
•
HTTP Traffic 에서는 Task Durations, URL Sessions Tasks, HTTP Transactions를 확인할 수 있다.
•
Task Durations
•
URL Sessions Tasks
•
HTTP Transactions