Xcode iOS 14 WidgetKit并非始终连接到调试器

wwtsj6pe  于 2022-11-18  发布在  iOS
关注(0)|答案(4)|浏览(150)

我正在iOS 14上开发WidgetKit扩展,但是,该扩展在构建和运行后并不总是连接到Xcode调试器,导致我看不到日志,如下图所示:(但有时会自动连接,我不知道为什么)

如果扩展附加到调试器,它应该如下所示,并打印日志:

手动将进程附加到调试器不起作用,应在首次启动时附加以查看日志。
有人知道如何正确调试iOS 14小部件吗?

lxkprmvk

lxkprmvk1#

Xcode 14.1已知问题:

Xcode 14.1发行说明似乎提到了一个已知问题
在运行一个小部件扩展后,用户需要手动启动调试会话,调试-〉附加到进程。(99285608)

进近(在模拟器和器械上工作)

  • 同时运行应用程序目标和微件目标
  • 将调试器附加到微件

步骤

1.选择应用方案并在iOS设备上运行(不要停止)

  • 选择widget方案并在iOS上运行(不要停止)
  • 所以两个目标同时运行
  • 选择微件方案,然后DebugAttach to Process〉选择微件目标名称
  • 在设备/模拟器上添加小部件

注:

  • 每次运行时都需要附加调试器(Xcode会忘记上次运行时添加的调试器)

现在,您的断点应该如预期那样工作,您可以调试

uyhoqukh

uyhoqukh2#

试着插入你的物理设备并在上面运行它,而不是在模拟器上。这就为我解决了日志问题。

ifmq2ha2

ifmq2ha23#

要调试或查看打印信息:(这对我很有效)
在Xcode的左上角-〉
点击项目名称,可以看到一个列表,选择widgetname,运行它
点击小部件名称,可以看到一个列表,选择项目名称,运行它
Xcode:版本12.3,iPad:iPad操作系统14.3

xsuvu9jc

xsuvu9jc4#

您可以在本地文件中记录您的有用信息,就像这样:

public func XXLogToFile(_ text: String) {
    if let documentsDirectory = FileManager().containerURL(forSecurityApplicationGroupIdentifier: "group.xxx") {
        let logFileUrl = documentsDirectory.appendingPathComponent("log.txt")
    
         do {
            var logContent = try String(contentsOf: logFileUrl, encoding: .utf8)
            logContent = (logContent.count > 0 ? "\(logContent)\n\(text)" : text)
            try logContent.write(to: logFileUrl, atomically: false, encoding: .utf8)
        }
        catch {}
    }
}

相关问题