Iphone 如何从占用USB的iOS设备调试或查看NSLog输出?

Iphone 如何从占用USB的iOS设备调试或查看NSLog输出?,iphone,ios,debugging,console,Iphone,Ios,Debugging,Console,我正在iPhone上开发一个录音应用程序。为了使用外部USB麦克风测试我的应用程序,我需要将iPhone从Mac上拔下,以便连接麦克风 我的问题是,一旦iPhone不再连接到Mac,我就无法调试我的iPhone应用程序,也无法查看控制台输出。是否有方法通过USB电缆以外的其他介质(例如网络或蓝牙)连接调试器 我读到,在越狱后,你可以安装ssh。这是一个解决方案,我会立即使用,如果它不需要窃听电话。我不想越狱的每一部手机上,我想测试我的应用程序 任何用于查看日志输出的非标准但可靠的解决方案也值得赞

我正在iPhone上开发一个录音应用程序。为了使用外部USB麦克风测试我的应用程序,我需要将iPhone从Mac上拔下,以便连接麦克风

我的问题是,一旦iPhone不再连接到Mac,我就无法调试我的iPhone应用程序,也无法查看控制台输出。是否有方法通过USB电缆以外的其他介质(例如网络或蓝牙)连接调试器

我读到,在越狱后,你可以安装ssh。这是一个解决方案,我会立即使用,如果它不需要窃听电话。我不想越狱的每一部手机上,我想测试我的应用程序


任何用于查看日志输出的非标准但可靠的解决方案也值得赞赏。例如,我目前正在iPhone上使用一个快速“n”脏写HTTP服务器,然后使用Mac上的浏览器或telnet连接到iPhone并查看控制台输出。

您可以将调试日志写入文件,测试后可以看到它们

@interface LogFile : NSObject
+ (void)WriteLogWithString:(NSString *)log;

@end
这是实现文件

@implementation LogFile


+ (NSString*)CurrentSystemTime {
    return [[NSDate date] description];
}

+(NSString*)getDocumentsPath
{
    NSString *path  = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    return path;
}

+ (NSString*)getLogFilePath
{
    NSString *loggingFilePath = nil;

    loggingFilePath = [[self getDocumentsPath] stringByAppendingPathComponent:@"/MYLogFile.txt"];
    return loggingFilePath;
}


+ (void)WriteLogWithString:(NSString *)log
{

        if(log != nil){

            NSString *locationFilePath = [self getLogFilePath];

           NSString *str = [NSString stringWithFormat:@"%@  %s [Line %d]: %@", [self CurrentSystemTime],__PRETTY_FUNCTION__,__LINE__,log];            
            FILE *fp = fopen([locationFilePath UTF8String], "a");

            fprintf(fp,"%s\n", [str UTF8String]);

            fclose(fp);
        }

}

@end
现在你必须像这样调用这个方法

 [LogFile WriteLogWithString:@"sachin thakur"];

您可以将调试日志写入该文件,测试后可以看到它们

@interface LogFile : NSObject
+ (void)WriteLogWithString:(NSString *)log;

@end
这是实现文件

@implementation LogFile


+ (NSString*)CurrentSystemTime {
    return [[NSDate date] description];
}

+(NSString*)getDocumentsPath
{
    NSString *path  = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    return path;
}

+ (NSString*)getLogFilePath
{
    NSString *loggingFilePath = nil;

    loggingFilePath = [[self getDocumentsPath] stringByAppendingPathComponent:@"/MYLogFile.txt"];
    return loggingFilePath;
}


+ (void)WriteLogWithString:(NSString *)log
{

        if(log != nil){

            NSString *locationFilePath = [self getLogFilePath];

           NSString *str = [NSString stringWithFormat:@"%@  %s [Line %d]: %@", [self CurrentSystemTime],__PRETTY_FUNCTION__,__LINE__,log];            
            FILE *fp = fopen([locationFilePath UTF8String], "a");

            fprintf(fp,"%s\n", [str UTF8String]);

            fclose(fp);
        }

}

@end
现在你必须像这样调用这个方法

 [LogFile WriteLogWithString:@"sachin thakur"];

当我与MFi合作时,我有一个苹果提供的加密狗,它允许iPhone同时连接到电脑和配件


您还可以通过设备下的设备选项卡中的Xcode organizer查看控制台打印输出。

当我使用MFi时,我有一个苹果提供的加密狗,它允许iPhone同时连接到电脑和附件

您还可以通过设备下“设备”选项卡中的Xcode organizer查看控制台打印输出。

我创建了一个库,可用于直接在应用程序中查看控制台输出。您只需使用DVLog而不是NSLog:

DVLog(@"Some message %@", parameters);
您还可以通过为每个日志创建单独的选项卡来查看多个日志。按下按钮可以通过电子邮件发送所有日志。

我创建了一个库,可用于直接在应用程序中查看控制台输出。您只需使用DVLog而不是NSLog:

DVLog(@"Some message %@", parameters);

您还可以通过为每个日志创建单独的选项卡来查看多个日志。您可以通过电子邮件按按钮发送所有日志。

如果您正在寻求实时调试+您确实拥有iPhone 4、4S或更旧的iPad(30针接口),那么这可能是您的答案。使用此附件,您应该能够连接到mac(XCODE)+外部附件


如果您正在寻求实时调试+您确实拥有iPhone 4、4S或更旧的iPad(30针连接器),这可能是您的答案。使用此附件,您应该能够连接到mac(XCODE)+外部附件


Thakur sahab的可能副本别忘了启用itunes文件共享密钥。这样就可以使用从设备中提取日志文件itunes@InderKumarRathore是的,Rathor sahab。Thakur sahab别忘了启用itunes文件共享密钥。这样就可以使用从设备中提取日志文件itunes@InderKumarRathore是的,Rathor sahab。