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

时间:2013-07-23 14:37:15

标签: iphone ios debugging console

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

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

我已经读过,在越狱iPhone之后,可以安装ssh,connect to the iPhone using ssh, and tail the syslog。这是一个解决方案,我会立即使用,如果它不需要jailreaking手机。我不想越狱,我想测试我的应用程序。

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

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:2)

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

http://www.cablejive.com/products/dockStubz.html

答案 2 :(得分:1)

您可以将调试日志写入文件中,经过测试,您可以看到它们。

@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"];

答案 3 :(得分:1)

当我使用MFi时,我有一个Apple提供的加密狗,允许iPhone同时连接到电脑和配件。

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