Search
Duplicate

디버깅을 위한 Xcode 활용 방법

생성일
2023/12/25 13:19
태그
Xcode
Debugging

나도 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