Làm cách nào để bật gỡ lỗi trong iOS?

Trong hướng dẫn này, chúng tôi sẽ gỡ lỗi một ứng dụng iOS bằng Xcode của Apple. Xcode là một môi trường mạnh mẽ để phát triển và khắc phục sự cố ứng dụng iOS. Chúng tôi sẽ xem cách chúng tôi có thể sử dụng nó, cùng với Báo cáo sự cố iOS của Raygun, để nhanh chóng giải quyết sự cố thiếu ứng dụng

Raygun cho phép bạn phát hiện và chẩn đoán lỗi cũng như các vấn đề về hiệu suất trong cơ sở mã của bạn một cách dễ dàng

Mất vài phút để thêm Raygun vào phần mềm của bạn. Được cảnh báo về các sự cố ảnh hưởng đến người dùng cuối và sao chép sự cố nhanh hơn 1.000 lần so với việc sử dụng nhật ký và thông tin không đầy đủ từ người dùng. Tìm hiểu thêm và dùng thử Raygun miễn phí trong 14 ngày

Chúng tôi sẽ làm theo sáu bước để kiểm tra một ứng dụng đơn giản, cô lập và sửa lỗi

Hướng dẫn này yêu cầu máy tính macOS có cài đặt Xcode. Chúng tôi sẽ sử dụng phiên bản Xcode hiện tại tại thời điểm viết bài này, đó là phiên bản 10. Mã nguồn cho dự án này có sẵn trên Github

Vậy hãy bắt đầu

Bước 1. dự án mẫu

Chúng tôi sẽ sử dụng ứng dụng iOS một chế độ xem cho hướng dẫn này. Chế độ xem đơn có một nút có văn bản thay đổi cho mỗi lần nhấn. Nếu bạn muốn làm theo, bạn sẽ cần đăng ký tài khoản Raygun. Sau khi bạn kiểm tra dự án, hãy thêm khóa API Raygun [Giao diện lập trình ứng dụng] của bạn vào didFinishLaunchingWithOptions trong AppDelegate.m

- [BOOL]application:[UIApplication *]application didFinishLaunchingWithOptions:[NSDictionary *]launchOptions {
    // Override point for customization after application launch.
    [[Raygun sharedReporterWithApiKey:@"YOUR_RAYGUN_KEY"] attachPulse];
    return YES;
}

Bạn có thể tìm thấy hướng dẫn đầy đủ để thiết lập ứng dụng iOS. Bạn có thể làm theo hướng dẫn này với ứng dụng của mình nếu bạn thích

Đây là chế độ xem khởi động của ứng dụng mẫu

Mỗi lần bạn nhấn vào nút, văn bản hiển thị sẽ thay đổi. Sau một vài lần nhấn, ứng dụng bị treo. Hãy tưởng tượng rằng ứng dụng này đã được phát hành lên App Store và đã được phê duyệt. Bạn cần theo dõi lỗi nhanh chóng

Bước 2. Phân tích báo cáo gỡ lỗi Raygun {analyze}

May mắn thay, bạn đã tích hợp ứng dụng của mình với Giám sát lỗi Raygun và Báo cáo sự cố, vì vậy bạn có thể sử dụng thông tin này để biết vị trí tìm lỗi

Trước tiên, hãy xem tóm tắt lỗi

Vì chúng tôi đã buộc lỗi ngay bây giờ, chúng tôi không cần ngày và giờ. Nhưng trong trường hợp có bất kỳ lỗi nào xảy ra trong các ứng dụng đã triển khai, ngày và giờ có thể thuận lợi. Tên lớp và thông báo lỗi cho chúng tôi biết rất nhiều về lỗi. NSRangeException chỉ ra rằng mã vượt quá giới hạn của cấu trúc dữ liệu và báo cáo cho thấy một chỉ số con nằm ngoài phạm vi đang gây ra sự cố. Raygun cũng cung cấp một backtrace cho lỗi

Vì chúng tôi đang xử lý một ngoại lệ chưa được phát hiện, nên dấu vết ngược chỉ cung cấp cho chúng tôi ý tưởng sơ bộ về nơi xảy ra lỗi; . Vì vậy, chúng tôi sẽ cần chạy ứng dụng trong trình gỡ lỗi để tìm vị trí chính xác

Bước 3. Gỡ lỗi iOS bằng Xcode

Xcode cung cấp cho các nhà phát triển iOS một môi trường tích hợp để phát triển, thử nghiệm và gỡ lỗi các ứng dụng iOS. Trình giả lập hỗ trợ tất cả các nền tảng iOS hiện tại. Bạn có thể cài đặt và chạy các ứng dụng chỉ bằng một cú nhấp chuột và môi trường có hỗ trợ tích hợp cho trình gỡ lỗi lldb

Vì vậy, bạn có thể gỡ lỗi ứng dụng của mình trên máy tính để bàn phát triển. Hãy bắt đầu với việc sao chép lỗi trong trình giả lập

Chúng tôi muốn chắc chắn rằng chúng tôi chạy bản dựng gỡ lỗi, vì vậy hãy bắt đầu bằng cách giữ phím option và nhấp vào biểu tượng chạy ở phía trên bên trái của Xcode. Thao tác này sẽ hiển thị hộp thoại tùy chọn chạy

Đảm bảo rằng bạn đã chọn Run ở bên trái và bật chế độ gỡ lỗi ở bên phải. Bây giờ, bấm vào nút chạy. Sau khi quá trình xây dựng hoàn tất, ứng dụng sẽ bắt đầu trong trình giả lập

Tiếp theo, nhấp vào nút của ứng dụng iOS cho đến khi ứng dụng đưa ra ngoại lệ và trình gỡ lỗi xuất hiện trong Xcode

Ở phía bên trái, trình điều hướng gỡ lỗi hiển thị các chuỗi ứng dụng. Xcode làm nổi bật chính trong luồng số 1 vì các ngoại lệ chưa được phát hiện “nổi bong bóng” lên vị trí đó trong ứng dụng. Trong ngăn trình chỉnh sửa, Xcode làm nổi bật chức năng đó trong chính. m. Xcode cho chúng ta thấy rằng một SIGABRT đã được đưa vào bên trong main. Ở dưới cùng của giao diện dòng lệnh của Xcode lldb có sẵn. Chúng tôi sẽ điều khiển nó từ GUI [Giao diện người dùng đồ họa]

Cuối cùng, nhấp vào nút dừng, bên cạnh để chạy, để dừng phiên gỡ lỗi. Raygun đã nói với chúng tôi rằng ứng dụng có một ngoại lệ chưa được phát hiện, vì vậy chúng tôi chưa biết được điều gì mới về lỗi này. Bây giờ, hãy sử dụng Xcode để bắt ngoại lệ và khám phá xem nó đến từ đâu

Bước 4. Đặt điểm ngắt ngoại lệ

Vì vậy, hãy vào menu Debug, chọn Breakpoints

@implementation ViewController

int counter = 0;

NSArray *labels = nil;
+ [void]initialize {
    labels = @[@"Ow!", @"Ouch!", @"Oof!", @"Stop!"];
}

- [IBAction]boomButton:[id]sender {

    if [counter == 3] {
        counter = 0;
    } else {
        ++counter;
    }

    [sender setTitle:[labels objectAtIndex: counter] forState:UIControlStateNormal];

}

- [void]viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

@end
0

Xcode hiển thị trình điều hướng điểm ngắt ở bên trái và một cửa sổ bật lên sẽ xuất hiện

Mặc định là phá vỡ cả ngoại lệ C++ và Mục tiêu C và dừng trình gỡ lỗi nơi chúng được ném. Điều này sẽ đưa chúng ta đến nơi xảy ra sự cố. Tiếp theo, nhấp vào bất kỳ đâu để loại bỏ cửa sổ bật lên và chấp nhận các giá trị mặc định

Bước 5. Chạy ứng dụng với breakpoint

Bây giờ, chạy lại ứng dụng và buộc lỗi

Trình gỡ lỗi đã dừng khi ứng dụng tạo ngoại lệ và đánh dấu dòng mã chịu trách nhiệm

Như bạn có thể mong đợi từ báo cáo lỗi Raygun, mã này tham chiếu đến một mảng. Vấn đề rõ ràng khi xem dòng được đánh dấu. Chúng tôi đang tăng chỉ số mảng mà không cần kiểm tra giới hạn. Nếu bạn nhìn xuống cửa sổ gỡ lỗi trong Xcode, bạn có thể thấy bộ đếm đó bằng cách nào đó đã biến nó thành giá trị năm khi mảng chỉ dài bốn phần tử

Đáng lẽ ứng dụng phải sập sớm hơn

Nhưng nếu vấn đề khó cô lập hơn thì sao?

Bước 6. Cô lập lỗi và sửa nó

Đầu tiên, dừng phiên gỡ lỗi

Tiếp theo, nhấp đúp vào bên cạnh dòng vi phạm trong mã nguồn để hiển thị cửa sổ bật lên hộp thoại điểm ngắt

Thêm một điều kiện cho điểm dừng;

Chạy lại ứng dụng và khi bạn buộc lỗi, nó sẽ dừng trước khi iOS ném ngoại lệ. Chỉ số mảng và số gia nằm trên cùng một dòng mã. Vì vậy, tiếp tục sau điểm dừng sẽ vẫn dẫn đến việc iOS ném ngoại lệ. Điểm dừng này làm cho lỗi trở nên rõ ràng và chúng ta có thể thấy các điểm ngắt có điều kiện có thể giúp cô lập một vấn đề hóc búa như thế nào

Có một số cách để sửa lỗi này. Hầu hết những cái tốt hơn đều có thiết kế khác, nhưng chúng ta hãy khắc phục nhanh

@implementation ViewController

int counter = 0;

NSArray *labels = nil;
+ [void]initialize {
    labels = @[@"Ow!", @"Ouch!", @"Oof!", @"Stop!"];
}

- [IBAction]boomButton:[id]sender {

    if [counter == 3] {
        counter = 0;
    } else {
        ++counter;
    }

    [sender setTitle:[labels objectAtIndex: counter] forState:UIControlStateNormal];

}

- [void]viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

@end

Bằng cách kiểm tra giới hạn của mảng trước khi chúng tôi tăng bộ đếm, chúng tôi không bao giờ vượt quá độ dài của mảng. Chạy lại ứng dụng và sự cố đã biến mất

Bước tiếp theo

Công cụ phát triển XCode của Apple đơn giản hóa việc gỡ lỗi các ứng dụng iOS. Nó cung cấp hỗ trợ tích hợp cho trình gỡ lỗi nâng cao cũng như các phím tắt dựa trên GUI cho các tác vụ phổ biến như thêm điểm dừng

May mắn thay, bạn cũng có thể dựa vào trình giả lập của họ để mô phỏng chính xác toàn bộ thiết bị iOS do Apple kiểm soát nền tảng này. Khi bạn đã xác minh rằng một sự cố đã được giải quyết trong trình giả lập, bạn cũng có thể chuyển sang các thiết bị cục bộ và kiểm tra ở đó

Tất nhiên, với Raygun, bạn có thêm một lớp bảo vệ để phát hiện, chẩn đoán và loại bỏ lỗi iOS. Báo cáo Raygun trong ví dụ này cho chúng tôi biết lỗi là gì và giúp cách ly dễ dàng hơn nhiều. Cảnh báo thông minh và nhóm lỗi của Raygun có nghĩa là bạn sẽ không bao giờ bỏ sót một lỗi nào trong ứng dụng của mình nữa. Đọc thêm về báo cáo sự cố iOS

Có chế độ gỡ lỗi cho iPhone không?

Mở menu Cài đặt iPhone. Trên iPhone có phiên bản iOS đầu tiên, truy cập Bảng điều khiển gỡ lỗi thông qua Cài đặt > Safari > Nhà phát triển > Bảng điều khiển gỡ lỗi . Khi Safari trên iPhone phát hiện lỗi CSS, HTML và JavaScript, chi tiết của từng lỗi sẽ hiển thị trong trình gỡ lỗi.

Công cụ sửa lỗi trong iOS là gì?

5 Công cụ gỡ lỗi giao diện người dùng trong iOS. Các công cụ sẽ giúp bạn gỡ lỗi ứng dụng iOS tốt hơn. RevealApp — https. // tiết lộ ứng dụng. com
Sherlock. Sherlock - Cung cấp siêu năng lực cho Trình mô phỏng iOS của bạn. .
Hyperion. willowtreeapps/Hyperion-iOS. .
tiết lộ ứng dụng. Tiết lộ bởi Ứng dụng Itty Bitty. .
Bố cục Thanh tra. isavynskyi/LayoutInspector. .
UỐN CONG. Ván lật/FLEX

Chủ Đề