2014-06-30 19 views
9

Trong Objective-C, Bất cứ khi nào một ứng dụng bị treo, tôi có thể nhận stack trace để xem nơi là phương pháp cuối cùng là nguyên nhân gây lỗi bằng cách sử dụng mã này trong AppDelegateLàm cách nào để nhận được lỗi theo dõi ngăn xếp trong Swift?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSSetUncaughtExceptionHandler(&myExceptionHandler); 
    return YES; 
} 

void myExceptionHandler(NSException *exception) 
{ 
    NSArray *stack = [exception callStackReturnAddresses]; 
    NSLog(@"Stack trace: %@", stack); 

    NSLog(@"MyExceptionHandler"); 
} 

và nó sẽ in stack trace log để giao diện điều khiển mà tôi có thể sử dụng để gỡ lỗi nguyên nhân của vấn đề thay vì kết thúc tại main.m mà không có thông tin

Vậy làm cách nào tôi có thể thực hiện điều này trong Swift?

+1

kiểm tra: http://stackoverflow.com/questions/24023112/try-catch-exceptions-in-swift –

+0

Lưu ý: Mã của bạn chỉ cho thấy đống dấu vết cho trường hợp ngoại lệ, không phải cho tai nạn dựa tín hiệu khác. – Kerni

Trả lời

3

Nếu tôi hiểu bạn một cách chính xác, tôi nghĩ rằng những gì bạn đang tìm kiếm là một ngoại lệ breakpoint, có chức năng giống như một breakpoint thường xuyên nhưng bất cứ khi nào được gọi là một ngoại lệ được ném. Bằng cách đó, nó sẽ dừng ứng dụng của bạn ngay khi ngoại lệ được ném ra, vì vậy bạn có thể thấy phương thức, dòng mã và các giá trị biến tại thời điểm xảy ra sự cố.

này có thể được thiết lập bằng cách vào Breakpoint Navigator tab trong Navigator, nhấp vào dấu cộng ở phía dưới bên trái và chọn "Add Exception Breakpoint".

Các ngoại lệ Breakpoint hơn có thể được chỉnh sửa với các tùy chọn khác nhau bằng cách kích chuột phải vào nó và chọn "Sửa Breakpoint".

Các vấn đề liên quan