Upload
vudinhthuy
View
559
Download
0
Embed Size (px)
Citation preview
Các công cụ thường dùng
trong xcodeVũ Đình Thủy
Mục lục
Flow Control
Breakpoint
Instruments
Crash log
More
Flow Control
Các nút theo thứ tự từ trái qua phải là: continue, step over, step in, step out.
● Continue: cho phép chương trình tiếp tục thực hiện binh thường hoặc sẽ dừng khi gặp
một breakpoint khác.
● Step over: Thự hiện dòng code tiếp theo breakpoint, nếu như đặt breakpoint tại một
dòng gọi hàm thì nó sẽ không nhảy vào hàm đó mà sẽ thực hiện lời gọi hàm đó và
nhảy xuống dòng tiếp.
● Step in: Khi breakpoint đặt tại một dòng gọi hàm và ta muốn nhảy vào trong hàm đó để
debug thì dùng nut step in.
● Step out: Khi dùng step in và đang ở trong một hàm thì nếu muốn nhảy ra khỏi hàm đó
và trở về đoạn gọi hàm thì dùng step out.
Breakpoint
Breakpoint
● Condition: Điều kiện để breakpoint được thự hiện.
● Ignore: Breakpoint sẽ chỉ được thự hiện khi điểm
breakpoint đã được gọi n lần.
● Action: thêm các action khi một breakpoint được thự
hiện
● Automatically continue after evaluation actions: Khi
breakpoint được thự hiện nó sẽ không dừng chương
trình mà để chương trình tiếp tục thực hiện.
Symbolic Breakpoint
Sẽ dừng tại bất cứ điểm nào gọi hàm (isEven)
Dùng khi muốn biết một hàm được gọi ở những đâu
Instruments
Giới thiệu về công cụ tìm leak memory
Hai loại leak
1. True memory leaks: Khi một object không được tham chiếu nhưng vẫn nằm
trong bộ nhớ. Thường xảy ra khi bị retain cycle hay strong reference cycle.
2. Unbounded memory growth: Khi bộ nhớ được allocate liên tục và không
được reuse dẫn tới tràn bộ nhớ
Instruments
Dùng công cụ Allocations khi tạo profile.
• Tại tab Display Setting, có nút tên Mark Generation.
• Khi ấn nút đó trên track memory sẽ xuất hiện một cờ
màu đỏ.
• Tại mỗi điểm là một snapshot về trạng thái allocation
chênh lệch so với điểm trước đó.
• Làm đi làm lại nhiều lần để xác định được nguyên nhân
gây leak
Instrument - Use case: Strong reference cycle
• Tìm kiếm từ màn hình ViewController.
• Sau đó chọn một trong các kết quả sẽ sang màn hình SearchResultsCollectionView.
• Khi back lại từ màn hình SearchResultsCollectionView sẽ bị leak.
ViewController SearchResultsCollectionView
Instrument - Use case: Strong reference cycle
#Persistent: Số object đang có trong bộ nhớ.
#Transient: Số object đã được giải phóng.
Instrument - Use case: Strong reference cycle
Crash log
Lấy bằng xcode để crash log chuyển sang dạng symbolication.
Để xcode có thể symbolicate thì trên máy phải có .dSYM và file binary của ban
build mà sinh ra crash log.
Crash log - Exception types
Exception types/codes Names Descriptions
EXC_BAD_ACCESS
SIGSEGV
SIGBUS
Bad Memory Access Khi truy cập vào object đã bị release
EXC_CRASH
SIGABRT
Abnormal Exit Thường xảy ra khi gọi một hàm từ một object nhưng hàm đó chưa
được implement.
0x8badf00d Ate bad food Khi app mất quá nhiều thời gian để chạy, terminate hoặc respond
lại một sự kiện của hệ thống và sẽ bị watchdog của iOS tắt.
0xdead10cc Dead lock App bị tắt do giữ resource quá lâu khi chạy dưới background
0xdeadfa11 Dead fall App bị force-quit bởi người dùng. Khi app bị treo và người dùng ấn
giữ nút nguồn đến khi hiện “slide to power off” và lại ấn giữ nút
home để tắt app.
Crash log - example
More - Câu lệnh trong console
po - In ra màn hình thông tin của object. VD: po self.view
bt - In ra backtrace
More - Assitant Editor
More - Color Blended Layers on Simulator