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

Posted

技术标签:

【中文标题】如何从占用 USB 的 iOS 设备调试或查看 NSLog 输出?【英文标题】:How to debug or view NSLog output from iOS device where USB is occupied? 【发布时间】:2013-07-23 14:37:14 【问题描述】:

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

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

我了解到,在您的 iPhone 越狱后,可以安装 ssh,connect to the iPhone using ssh, and tail the syslog。如果不需要越狱手机,我会立即使用这个解决方案。我不想越狱我想测试我的应用程序的每部手机。

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

【问题讨论】:

Debugging an ios app with an external accessory connected via Dock的可能重复 【参考方案1】:

我已经制作了库DVFloatingWindow,可用于直接在应用程序中查看控制台输出。你只需要使用 DVLog 而不是 NSLog:

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

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

Thakur sahab 不要忘记启用 iTunes 文件共享密钥。这样就可以使用 iTunes 从设备中提取日志文件 @InderKumarRathore 是的 Rathor sahab。【参考方案4】:

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

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

【讨论】:

以上是关于如何从占用 USB 的 iOS 设备调试或查看 NSLog 输出?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用连接 USB 电缆调试在 Xcode 未启动的移动设备中执行的 iOS 应用程序

如何用adb连接android手机

如何用 Chrome DevTools 调试 iOS Safari

ADB连接手机和简单命令

Jetson设备如何接调试串口工具查看内核打印信息

如何在三星galaxy s7上为React Native启用USB调试