Section 5/161 menit
5. Breakpoints Lanjutan
5. Breakpoints Lanjutan
Conditional Breakpoint
Breakpoint hanya berhenti jika kondisi terpenuhi — sangat berguna di dalam loop yang iterasi ribuan kali.
swift
# Berhenti hanya jika variabel memenuhi kondisi
(lldb) breakpoint set --name processItem --condition "item.price > 100.0"
# Berhenti di baris 42 hanya jika index == 500
(lldb) breakpoint set --file DataProcessor.swift --line 42 --condition "index == 500"
# Berhenti hanya jika string berisi nilai tertentu
(lldb) breakpoint set --file NetworkManager.swift --line 87 --condition 'url.absoluteString.contains("api/users")'
Atau di Xcode: klik kanan breakpoint → Edit Breakpoint → isi field "Condition".
Action Breakpoint: Log tanpa Pause
Breakpoint bisa menjalankan action (log, script) dan langsung melanjutkan eksekusi tanpa pause — mirip print() tapi tanpa mengubah kode.
swift
# Tambahkan action ke breakpoint yang sudah ada (ID = 1)
(lldb) breakpoint modify 1 --command "po self" --command "continue"
# Buat breakpoint dengan auto-continue dan log
(lldb) breakpoint set --name fetchUser --command "po userId" --auto-continue true
Di Xcode: Edit Breakpoint → Add Action → Log Message atau Debugger Command, centang "Automatically continue after evaluating actions".
Symbolic Breakpoint
Berhenti di method tertentu di seluruh codebase atau framework, bahkan tanpa source code.
swift
# Berhenti di semua implementasi viewWillAppear di seluruh app + framework
(lldb) breakpoint set --name "viewWillAppear:"
# Berhenti di Swift method tertentu (perlu mangled name atau regular expression)
(lldb) breakpoint set --func-regex ".*processPayment.*"
# Berhenti di semua init dari class tertentu
(lldb) breakpoint set --func-regex "MyClass\.init"
Di Xcode: Debug → Breakpoints → Create Symbolic Breakpoint (Command+Option+\).
Exception Breakpoint
Berhenti tepat saat exception dilempar, sebelum propagasi — bukan saat crash sudah terjadi.
swift
# Berhenti saat ObjC exception dilempar (berguna untuk NSException)
(lldb) breakpoint set --name objc_exception_throw
# Di Xcode: Debug → Breakpoints → Create Exception Breakpoint
# Set: Exception = Objective-C, pada: Throw
Swift Error Breakpoint
swift
# Berhenti saat Swift error di-throw (berguna untuk debugging try/catch)
(lldb) breakpoint set --name swift_willThrow
# Atau di Xcode: Exception Breakpoint → Exception = Swift
Breakpoint dengan Hit Count
swift
# Berhenti hanya pada iterasi ke-100
(lldb) breakpoint set --file DataLoader.swift --line 55 --ignore-count 99
# Di Xcode: Edit Breakpoint → "Ignore" = 99 times before stopping