簡體   English   中英

一個簡單的代碼,不知道如何調試

[英]A simple code, don't know how to debug

在我的BNRItem.m中,我實現了一個類方法:

#import "BNRItem.h"

@implementation BNRItem

+ (instancetype) randomItem {

    // Create an immutable array of three adjectives
    NSArray *randomAdjectiveList = @[@"Fluffy", @"Rusty", @"Shiny"];

    //three nouns
    NSArray *randomNounList = @[@"Bear", @"Spork", @"Mac"];

    //random number for 0 to 2
    //NOTE: NSInteger is not an object, but a type definition for "long"
    NSInteger adjectiveIndex = arc4random() % [randomAdjectiveList count];
    NSInteger nounIndex = arc4random() % [randomNounList count];

    NSString *randomName = [NSString stringWithFormat:@"%@ %@",
                            randomAdjectiveList[adjectiveIndex],
                            randomNounList[nounIndex]];

    int randomValue = arc4random() % 100;

    NSString *randomSerialNumber = [NSString stringWithFormat:@"%c%c%c%c%c",
                                    '0' + arc4random() % 10,
                                    'A' + arc4random() % 26,
                                    '0' + arc4random() % 10,
                                    'A' + arc4random() % 26,
                                    '0' + arc4random() % 10];


    BNRItem *newItem = [[self alloc] initWithItenName:randomName
                                          valueInDollars:randomValue
                                            serialNumber:randomSerialNumber];

    return newItem;

}

@end

在main.m中,我嘗試調用class方法來創建BNRItem的新實例:

#import <Foundation/Foundation.h>
#import "BNRItem.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        NSMutableArray *items = [[NSMutableArray alloc] init];

        for (int i = 0; i < 10; i++) {
            //Thread 1: breakpoint 1.1
            BNRItem *item = [BNRItem randomItem];
            [items addObject:item];
        }

        for (BNRItem *item in items) {
            NSLog(@"%@", item);
        }

        //destroy the mutable array object
        items = nil;
    }
    return 0;
}

但是,當我運行我的應用程序時,遇到了以下我不理解如何調試的事情,沒有錯誤消息,它只是在代碼中顯示了一個斷點:

在此處輸入圖片說明

那么,我的代碼有什么問題呢? 我該如何調試這種情況? 我的意思是,我不僅在尋找如何使當前代碼運行的方法,還想知道如何在這種情況下進行調試? 因為控制台不會提供太多有關代碼錯誤的信息。

您的應用程序在breakpoint打開的情況下運行。 您所需要做的就是單擊藍色符號(如下圖所示),然后再次運行它。 該符號應變為白色。 那么您應該很好走!

在此處輸入圖片說明

正如其他人所說,您正在代碼中遇到斷點。 屏幕快照中第17行上的藍色箭頭是一個斷點,並且它旁邊有刻度線,並且右邊距中的文字為“線程1:breapoint ...”的事實表明您已經擊中了一個斷點。

這是一個非常有用的調試工具。 您應該學習如何使用它。 單擊另一行上的同一點會在該行上添加一個斷點。 在運行程序時,如果執行了該行代碼,調試器將在運行該行之前停止執行,並向您顯示需要查看的變量的當前值(剛剛更改的變量以及局部變量)。

如果抓住一個藍色的斷點並將其拖走,它將刪除它。 如果單擊它,它將在活動和禁用之間切換。

還有一個調試器命令行,可讓您輸入調試器命令以顯示變量的值(甚至執行代碼)。

現在,只需將斷點拖到遠處即可將其刪除,但請花一些時間來學習如何使用斷點和調試器的其他功能。 的確,這是IDE最強大的功能之一,如果您要超越開發人員的初級階段就必須學習如何做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM