Breakpoint — یہ کیا ہے، بریک پوائنٹ کی اقسام اور ڈیبگنگ میں استعمال

مصنف: IT Sectr اشاعت: 2026-05-06 مطالعے کا وقت: 9 منٹ

بریک پوائنٹ (breakpoint) کوڈ میں ایک خاص نشان ہے، جس پر پہنچنے پر ڈیبگر حالت کا معائنہ کرنے کے لیے پروگرام کی عملدرآمد روک دیتا ہے۔ Apple Debugging Guide کے مطابق، breakpoints ڈویلپر کو سورس کوڈ میں ترمیم کیے بغیر متغیرات کی قدریں، کال اسٹیک دیکھنے اور مرحلہ وار عملدرآمد کرنے کی اجازت دیتے ہیں۔ یہ حقیقی وقت میں خرابیوں کی تشخیص اور ایپلیکیشن کے رویے کے تجزیہ کا بنیادی آلہ ہے۔

اہم نکات

  • Breakpoint — سورس کوڈ میں ایک نشان جو حالت کے تجزیہ کے لیے مخصوص نقطہ پر پروگرام کی عملدرآمد روکتا ہے۔
  • بریک پوائنٹ کی اقسام میں لائن، مشروط، علامتی اور استثنا شامل ہیں — ہر ایک کا اپنا اطلاقی میدان ہے۔
  • LLDB — Xcode ڈیبگر جو گرافیکل انٹرفیس اور کنسول کمانڈز کے ذریعے breakpoints کا نظم کرتا ہے۔
  • مشروط breakpoints صرف اس وقت متحرک ہوتے ہیں جب مخصوص منطقی اظہار درست ہو، لوپس کو ڈیبگ کرتے وقت وقت بچاتے ہیں۔
  • اگر breakpoints غیر فعال ہوں تو ایپلیکیشن کی کارکردگی متاثر نہیں ہوتی — یہ مشروط طور پر مرتب ہوتے ہیں۔

Breakpoint کیا ہے اور اس کی ضرورت کیوں ہے

Breakpoint ایک فعال نشان ہے جو سورس کوڈ کی مخصوص لائن پر لگایا جاتا ہے، جس پر پہنچنے پر ڈیبگر زبردستی تھریڈ کی عملدرآمد روک دیتا ہے۔ اس لمحے، ڈویلپر کو ایپلیکیشن کی حالت پر مکمل کنٹرول مل جاتا ہے: موجودہ دائرہ کار میں تمام متغیرات کی قدریں دیکھ سکتا ہے، کال اسٹیک کا معائنہ کر سکتا ہے، صوابدیدی اظہارات انجام دے سکتا ہے اور مرحلہ وار عملدرآمد جاری رکھ سکتا ہے۔ Breakpoints کے بغیر، ڈیبگنگ عارضی print اظہارات کو لامتناہی طور پر شامل کرنے اور پھر حذف کرنے تک محدود ہو جاتی — ایک طریقہ جو کوڈ کو آلودہ کرتا ہے اور انٹرایکٹو کنٹرول فراہم نہیں کرتا۔

Breakpoint کا بنیادی مقصد خرابی کے ماخذ کا پتہ لگانا ہے۔ جب کوئی ایپلیکیشن غیر متوقع رویہ دکھاتی ہے، ڈویلپر مشکوک حصے سے پہلے ایک بریک پوائنٹ رکھتا ہے اور ترتیب وار تجزیہ کرتا ہے کہ کون سا ڈیٹا آتا ہے، متغیرات کیسے بدلتے ہیں اور عملدرآمد کس راستے پر چلتا ہے۔ Apple کے مطابق، موبائل ایپس میں 70% سے زیادہ خرابیاں جامد کوڈ تجزیہ کے بجائے breakpoints اور مرحلہ وار عملدرآمد کے امتزاج سے درست طور پر شناخت کی جاتی ہیں۔

Breakpoints ریلیز بلڈ کی کارکردگی کو متاثر نہیں کرتے — یہ صرف Debug کنفیگریشن میں مرتب ہوتے ہیں۔ Xcode میں ایک خاص DEBUG پرچم ہے جو ڈیبگ کوڈ کو پری پروسیسر ہدایات سے گھیرتا ہے۔ اس سے یقینی ہوتا ہے کہ breakpoints App Store میں نہیں جاتے اور آخری صارفین کو سست نہیں کرتے۔

روکنے کا طریقہ کار کیسے کام کرتا ہے

جب پروسیسر بریک پوائنٹ سے نشان زد لائن تک پہنچتا ہے، تو ایک ہارڈویئر یا سافٹ ویئر انٹرپٹ ہوتا ہے۔ Xcode میں SIGTRAP طریقہ کار استعمال ہوتا ہے — ایک ٹریس سگنل جو ڈیبگر کے ذریعے روکا جاتا ہے۔ LLDB تمام تھریڈز کو معطل کرتا ہے، Xcode انٹرفیس کو کنٹرول دیتا ہے اور ڈویلپر کے کمانڈ کا انتظار کرتا ہے: جاری رکھیں (continue)، آگے بڑھیں (step over)، اندر جائیں (step into) یا باہر آئیں (step out)۔

swift
func fetchUserData(userId: Int) {
    // LLDB will stop here if breakpoint is set
    let url = URL(string: "https://api.example.com/user/\(userId)")
    var request = URLRequest(url: url)
    request.httpMethod = "GET"
    print("Fetching user \(userId)")
}

اوپر کی مثال میں، لائن let url = ... پر لگایا گیا بریک پوائنٹ یہ جانچنے کی اجازت دیتا ہے کہ فنکشن میں کون سا userId بھیجا گیا، کیا URL درست طریقے سے جمع کیا گیا اور نیٹ ورک کال انجام دینے سے پہلے درخواست میں کون سے ہیڈر سیٹ ہیں۔

Xcode میں بریک پوائنٹ کی اقسام

Xcode پانچ اہم اقسام کے breakpoints فراہم کرتا ہے، ہر ایک مخصوص ڈیبگنگ کام حل کرتا ہے۔ ان کے فرق کو سمجھنا ہر صورت حال کے لیے بہترین آلہ منتخب کرنے اور صرف لائن بریک پوائنٹ استعمال کرنے کے مقابلے میں تشخیص کا وقت 2-3 گنا کم کرنے کی اجازت دیتا ہے۔

Breakpoint کی قسممقصدفعالیت
Line breakpointکوڈ کی مخصوص لائن پر رکناایڈیٹر میں لائن نمبر پر کلک کریں
Conditional breakpointشرط پوری ہونے پر رکنادایاں کلک → Edit Breakpoint → Condition
Symbolic breakpointفنکشن/طریقہ کال ہونے پر رکناBreakpoint Navigator → + → Symbolic Breakpoint
Exception breakpointاستثنا پھینکے جانے پر رکناBreakpoint Navigator → + → Exception Breakpoint
Error breakpointخرابی ہونے پر رکنا (Swift)Breakpoint Navigator → + → Swift Error Breakpoint

Line Breakpoint — بنیادی قسم

Line breakpoint سب سے عام قسم ہے۔ یہ Xcode ایڈیٹر میں لائن نمبر پر ایک کلک سے لگایا جاتا ہے۔ جب اس لائن پر پہنچا جاتا ہے، عملدرآمد روک دیا جاتا ہے اور ڈویلپر Debug Area پینل یا LLDB کنسول کے ذریعے حالت کا معائنہ کر سکتا ہے۔ Stack Overflow کے اعدادوشمار کے مطابق، 85% سے زیادہ iOS ڈویلپر لائن breakpoints کو اپنے بنیادی ڈیبگنگ آلے کے طور پر استعمال کرتے ہیں، جبکہ دیگر اقسام مخصوص منظرناموں جیسے تیسرے فریق کی لائبریریاں ڈیبگ کرنے یا استثنا پکڑنے کے لیے استعمال ہوتی ہیں۔

Symbolic Breakpoint — فنکشن کالز کو روکنا

Symbolic breakpoint آپ کو کسی مخصوص طریقہ یا فنکشن کے کال ہونے پر رکنے کی اجازت دیتا ہے، چاہے آپ کے پاس اس طریقہ کے سورس کوڈ تک رسائی نہ ہو۔ سسٹم فریم ورک کو ڈیبگ کرتے وقت یہ انمول ہے — مثال کے طور پر، جب UIKit layoutSubviews کو کال کرتا ہے اس لمحے کو روکنے کے لیے۔ ترتیب میں علامت کا نام (مثلاً، Objective-C کے لیے -[UIView layoutSubviews] یا Swift کے لیے UIView.layoutSubviews()) اور اختیاری پیرامیٹرز شامل ہیں: ماڈیول، شرط اور نظر انداز تعداد۔

swift
// Symbolic breakpoint to intercept layoutSubviews on UITableView
// Symbol name: -[UITableView layoutSubviews]
// Action: po UITableView.appearance()

class CustomTableView: UITableView {
    override func layoutSubviews() {
        super.layoutSubviews()
        // Symbolic breakpoint here will intercept the call
        print("layoutSubviews called")
    }
}

مشروط Breakpoints اور ایکشن کنفیگریشن

مشروط breakpoint لائن کے ہر عملدرآمد پر نہیں، بلکہ صرف اس وقت متحرک ہوتا ہے جب مخصوص منطقی اظہار true کا اندازہ لگائے۔ یہ لوپس، صفوں کی پروسیسنگ اور تکراری کالز کو ڈیبگ کرتے وقت بہت زیادہ وقت بچاتا ہے — ہر بار دستی طور پر Continue دبانے کے بجائے، ڈویلپر ایک شرط مقرر کرتا ہے اور ڈیبگر صرف متعلقہ لمحے پر رکتا ہے۔

رکنے کی شرط ترتیب دینا

شرط شامل کرنے کے لیے، بریک پوائنٹ پر دایاں کلک کریں، Edit Breakpoint منتخب کریں اور Condition فیلڈ میں Swift یا Objective-C میں ایک اظہار درج کریں۔ موازنہ، منطقی آپریٹرز اور بغیر ضمنی اثرات کے طریقہ کالز کی اجازت ہے۔ Xcode روکے گئے پروگرام کے سیاق و سباق میں اظہار کا اندازہ لگاتا ہے، اور اگر یہ درست ہے تو ڈیبگر حالت کو کیپچر کرتا ہے۔

swift
for index in 0..<1000 {
    // Breakpoint with condition: index == 500
    // The debugger will stop only on the 501st iteration
    processItem(at: index)
}

متحرک ہونے پر ایکشن

شرط کے علاوہ، ایک breakpoint پروگرام کو روکے بغیر خودکار ایکشنز انجام دے سکتا ہے۔ یہ بریک پوائنٹ کی ترتیبات میں Automatically continue after evaluating آپشن کے ذریعے لاگو کیا جاتا ہے۔ ایکشنز میں شامل ہیں: کنسول میں قدر آؤٹ پٹ کرنا (po variable)، آواز کا سگنل بجانا، صوابدیدی LLDB کمانڈ انجام دینا یا شیل اسکرپٹ چلانا۔ یہ طریقہ عارضی print اظہارات کی جگہ لیتا ہے اور سورس کوڈ میں ترمیم کیے بغیر ڈیٹا لاگ کرنے کی اجازت دیتا ہے۔

swift
// Breakpoint with action: po «Index: \(index), value: \(items[index])»
// Automatically continue = true → program does not stop

func processItems(_ items: [String]) {
    for (index, item) in items.enumerated() {
        // Here the breakpoint logs every iteration without stopping
        print("Processing \(item)")
    }
}

یہ تکنیک خاص طور پر UI اپ ڈیٹس کو ڈیبگ کرتے وقت مفید ہے — مثال کے طور پر، کنٹرولر کوڈ میں مداخلت کیے بغیر تمام فریم تبدیلیاں لاگ کرنے کے لیے۔ Ray Wenderlich کے مطابق، عارضی print اظہار کے بجائے breakpoint ایکشنز استعمال کرنے سے بعد میں کوڈ صاف کرنے کی ضرورت نہ ہونے کی وجہ سے ڈیبگنگ کا وقت 30-40% کم ہو جاتا ہے۔

LLDB کے ذریعے Breakpoints کا نظم

اگرچہ Xcode ایک آسان گرافیکل انٹرفیس فراہم کرتا ہے، LLDB ڈیبگر کنسول سے براہ راست بریک پوائنٹس کے پروگرامیٹک نظم کے لیے درجنوں کمانڈز کو سپورٹ کرتا ہے۔ یہ GUI کے ذریعے دستیاب نہ ہونے والی صلاحیتیں فراہم کرتا ہے: ریگولر ایکسپریشن کے ذریعے بریک پوائنٹس کی اجتماعی غیر فعالی، متحرک طور پر لوڈ کردہ لائبریریوں میں بریک پوائنٹ لگانا اور پیچیدہ کثیر مرحلہ ٹرگرز بنانا۔

Breakpoints کے لیے ضروری LLDB کمانڈز

LLDB کمانڈوضاحتمثال
breakpoint setبریک پوائنٹ لگائیںbreakpoint set -f ViewController.swift -l 42
breakpoint listتمام breakpoints دکھائیںbreakpoint list
breakpoint disableنمبر کے ذریعے بریک پوائنٹ غیر فعال کریںbreakpoint disable 1
breakpoint deleteبریک پوائنٹ حذف کریںbreakpoint delete 1.2
breakpoint modifyشرط یا ایکشن تبدیل کریںbreakpoint modify -c «i > 100» 1
lldb
(lldb) breakpoint set -f LoginViewController.swift -l 15 -c "email.isEmpty"
Breakpoint 1: 15 locations added.
(lldb) breakpoint modify 1 -C "po email" -G true
(lldb) breakpoint list
1: name = 'LoginViewController.swift:15', condition = 'email.isEmpty'
    1.1: addr = 0x1000a3b40

breakpoint set میں ریگولر ایکسپریشن

LLDB فنکشن ناموں کے لیے ریگولر ایکسپریشن کے ذریعے بریک پوائنٹ لگانے کو سپورٹ کرتا ہے۔ یہ ایک پیٹرن سے ملنے والے تمام طریقوں کو روکنے کی اجازت دیتا ہے — مثال کے طور پر، کسی مخصوص کلاس میں handle سے شروع ہونے والے تمام طریقے۔ یہ طریقہ ری فیکٹرنگ کے دوران اور نامانوس کوڈ کے تجزیہ میں استعمال ہوتا ہے جب آپ کو یہ سمجھنے کی ضرورت ہوتی ہے کہ کسی خاص واقعہ کی پروسیسنگ میں کون سے طریقے شامل ہیں۔

lldb
(lldb) breakpoint set -r "handle[A-Z]" -s DataManager
Breakpoint 2: 6 locations.
(lldb) breakpoint set -r ".*Error.*"
Breakpoint 3: 23 locations.

علامتی Breakpoints اور استثنا بریک پوائنٹ

Exception breakpoint کسی بھی استثنا کے پھینکے جانے پر پروگرام کی عملدرآمد روکتا ہے — Objective-C اور Swift دونوں خرابیاں۔ Xcode میں، آپ صرف Objective-C استثنا، صرف Swift خرابیاں یا تمام اقسام کی روک تھام ترتیب دے سکتے ہیں۔ یہ ایک ناگزیر آلہ ہے جب ایپلیکیشن کوڈ میں مقام کے واضح اشارے کے بغیر کریش ہو جائے — مثال کے طور پر، ڈی لوکیٹڈ آبجیکٹ تک رسائی کرتے وقت۔

Swift Error Breakpoint

Swift Error Breakpoint ایک خصوصی قسم ہے جو Xcode 11 میں متعارف کرائی گئی۔ یہ اس لمحے کو روکتا ہے جب Swift فنکشن throw کے ذریعے خرابی پھینکتا ہے، اس سے پہلے کہ وہ catch بلاک تک پہنچے۔ یہ دیکھنے کی اجازت دیتا ہے کہ کس فنکشن نے کس دلیل کے ساتھ خرابی پیدا کی، جو متعدد خرابی سے نمٹنے کی سطحوں والی پیچیدہ کال زنجیروں کو ڈیبگ کرتے وقت اہم ہے۔

swift
enum NetworkError: Error {
    case invalidURL
    case noData
    case decodingFailed(String)
}

func loadUserProfile(id: Int) throws -> UserProfile {
    guard id > 0 else {
        throw NetworkError.invalidURL
    }
    // Swift Error Breakpoint will stop here on throw
    return UserProfile(id: id, name: "Test")
}

علامتی breakpoints KVO اور NotificationCenter کو ڈیبگ کرتے وقت بھی مؤثر ہیں۔ observeValue(forKeyPath:of:change:context:) پر بریک پوائنٹ لگا کر، ڈویلپر ایپلیکیشن میں تمام KVO اطلاعات کو روک سکتا ہے، جو غیر متوقع UI اپ ڈیٹس یا خصوصیت کی نگرانی سے متعلق ریس کنڈیشن کی تشخیص میں مدد کرتا ہے۔

بریک پوائنٹ کے ساتھ کام کرنے کے عملی مشورے

Breakpoints کا مؤثر استعمال صرف ایک لائن پر رکنے سے کہیں آگے جاتا ہے۔ تجربہ کار ڈویلپر بریک پوائنٹ کی اقسام کو LLDB اسکرپٹس، عارضی رکنے والے زونز اور دوبارہ پیدا ہونے والی ڈیبگنگ کے لیے کنفیگریشن برآمد کے ساتھ جوڑتے ہیں۔ آئیے سب سے مفید تکنیکوں کو دیکھتے ہیں، جو Apple اور Google کے انجینئروں کی مشق سے تائید شدہ ہیں۔

مشکوک کوڈ کو الگ کرنا

مشکل سے پکڑے جانے والے بگز کو ڈیبگ کرتے وقت، طریقہ کے داخلے پر بریک پوائنٹ اور کلیدی متغیر کی تبدیلی پر واچ پوائنٹ کا امتزاج استعمال کریں۔ تفویض سے پہلے ایک لائن بریک پوائنٹ لگائیں، پھر LLDB کمانڈ watchpoint set variable کے ذریعے متغیر پر ایک watchpoint بنائیں۔ جب قدر بدلتی ہے، ڈیبگر رک جائے گا قطع نظر اس کے کہ کوڈ میں کہاں ترمیم ہوئی۔ Google کے مطابق، یہ طریقہ ایک ڈیبگنگ سیشن میں 90% معاملات میں ڈیٹا ریس کا ماخذ تلاش کر سکتا ہے۔

lldb
(lldb) watchpoint set variable self->_balance
Watchpoint 1: addr = 0x600000c4b80 size = 8
    state = enabled  type = w
    watchpoint spec: 'self._balance'
(lldb) watchpoint list
1: location = 0x600000c4b80, type = write, variable = '_balance'

ٹیسٹ منظرناموں کے لیے Breakpoint گروپ

Xcode Breakpoint Navigator کے ذریعے بریک پوائنٹس کو گروپ کرنے کی اجازت دیتا ہے۔ ہر منظرنامے کے لیے علیحدہ گروپ بنائیں — مثال کے طور پر، «لاگ ان»، «خریداری»، «نیٹ ورک کی خرابیاں»۔ مخصوص فعالیت کی جانچ کرتے وقت، صرف متعلقہ گروپ کو فعال کریں، باقی کو غیر فعال کریں۔ یہ غلط فعالیت کو روکتا ہے اور بڑے منصوبوں میں ڈیبگنگ کو تیز کرتا ہے جہاں بریک پوائنٹس کی تعداد کئی درجن سے تجاوز کر سکتی ہے۔ گروپ کو فائل میں برآمد کرنا ورژن کنٹرول کے ذریعے ساتھیوں کے ساتھ کنفیگریشن شیئر کرنے کی اجازت دیتا ہے۔

LLDB اسکرپٹس کے ساتھ آٹومیشن

پیچیدہ منظرناموں کے لیے، LLDB بریک پوائنٹ متحرک ہونے پر Python اسکرپٹس کے عملدرآمد کو سپورٹ کرتا ہے۔ بریک پوائنٹ ایکشن میں، script import my_debug_helper; my_debug_helper.log_state() بتائیں۔ یہ لامحدود امکانات کھولتا ہے: خودکار اعدادوشمار جمع، کالوں کے درمیان حالت کا موازنہ، ڈیبگ کوریج رپورٹس کی تخلیق۔ Apple کے مطابق، LLDB Python API CI ٹیسٹنگ کے دوران خودکار کریش تجزیہ کے لیے Xcode Cloud میں استعمال ہوتا ہے۔

اکثر پوچھے گئے سوالات

کیا breakpoints ایپلیکیشن کی رفتار کو متاثر کرتے ہیں؟

غیر فعال breakpoints کارکردگی کو متاثر نہیں کرتے — یہ صرف Debug کنفیگریشن میں مرتب ہوتے ہیں۔ فعال بریک پوائنٹ ہارڈویئر انٹرپٹ میکانزم کی وجہ سے عملدرآمد کو سست کرتے ہیں، لیکن صرف ڈیبگنگ کے دوران۔

کیا سورس کوڈ کے بغیر تیسرے فریق کی لائبریری میں بریک پوائنٹ لگایا جا سکتا ہے؟

ہاں، طریقہ یا فنکشن کے نام سے Symbolic breakpoint کے ذریعے۔ LLDB علامت کے کال ہونے پر رک جائے گا، چاہے سورس کوڈ دستیاب نہ ہو۔ مزید برآں، مرحلہ وار نیویگیشن کے لیے LLDB ڈس اسمبلر استعمال کیا جا سکتا ہے۔

Step Over اور Step Into میں کیا فرق ہے؟

Step Over موجودہ لائن کو مکمل طور پر انجام دیتا ہے (فنکشن کالز سمیت) اور اگلی لائن پر رکتا ہے۔ Step Into کال کردہ فنکشن کے اندر جاتا ہے، جس سے اسے مرحلہ وار ڈیبگ کیا جا سکتا ہے۔ Step Out کالر کو کنٹرول واپس کرتا ہے۔

Xcode سیشنز کے درمیان breakpoints کیسے محفوظ کریں؟

Breakpoints خود بخود پروجیکٹ کے اندر xcuserdata میں محفوظ ہو جاتے ہیں۔ ساتھیوں کے ساتھ شیئر کرنے کے لیے، Breakpoint Navigator → Share کے ذریعے برآمد کریں۔ .xcbkptlist فائل کو ریپوزٹری میں شامل کیا جا سکتا ہے اگر ڈیبگنگ ٹیم کا کام ہو۔

اگر بریک پوائنٹ پروگرام نہ روکے تو کیا کریں؟

بلڈ کی Debug کنفیگریشن، بریک پوائنٹ کی فعالیت (نیلا آئیکن)، علامتی بریک پوائنٹ کے لیے علامت کی درستگی اور سورس کوڈ کے قابل عمل بائنری سے مماثلت چیک کریں — اکثر Clean Build Folder مدد کرتا ہے۔

خلاصہ

  • Breakpoint — حالت کے تجزیہ کے لیے مخصوص لائن پر پروگرام کی عملدرآمد روکنے والا بنیادی ڈیبگنگ آلہ۔
  • Xcode 5 اقسام کے بریک پوائنٹ کو سپورٹ کرتا ہے: لائن، مشروط، علامتی، استثنا، Swift Error۔
  • مشروط breakpoints صرف مخصوص اظہار درست ہونے پر فعال ہوتے ہیں — لوپس اور صفوں کے لیے مثالی۔
  • LLDB بریک پوائنٹس کے پروگرامیٹک نظم کے لیے درجنوں کمانڈز فراہم کرتا ہے، بشمول اجتماعی غیر فعالی اور ریگولر ایکسپریشن۔
  • استثنا اور Swift Error breakpoints کیچ بلاک تک پہنچنے سے پہلے خرابیوں کو پکڑتے ہیں، کریش کی تشخیص آسان بناتے ہیں۔
  • Breakpoint ایکشنز (لاگنگ، آواز، اسکرپٹ) سورس کوڈ میں ترمیم کیے بغیر عارضی print اظہارات کی جگہ لیتے ہیں۔
  • Watchpoint بریک پوائنٹ کے ساتھ مل کر پروگرام کے کسی بھی مقام سے متغیر تبدیلیوں کو ٹریک کرنے کی اجازت دیتا ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں