【问题标题】:How do I debug an app on the Mac that accesses the camera?如何在 Mac 上调试访问相机的应用程序?
【发布时间】:2020-06-12 23:44:51
【问题描述】:

我的 Qt C++ 应用程序从 Mac 上的摄像头捕捉视频。它在其 plist 文件中设置了 NSCameraUsageDescription 值。但是,毫不奇怪,如果我从命令行或 Qt Creator 使用 lldb 运行它,这将无济于事。它只是与线路崩溃:

2020-02-28 15:32:14.462735-0500 mqtt[47726:867880] [access] This app has crashed because it attempted to access privacy-sensitive data without a usage description.  The app's Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

那么我该如何为 lldb 做到这一点?它在 Qt Creator 的 Info.plist 中,但我想如果它是通过 lldb 运行的,那将无济于事。

【问题讨论】:

  • 您可以尝试双击启动您的应用程序,然后使用 lldb 附加(或使用 Xcode 中的 Debug->Attach To Process)查看是否崩溃? lldb 启动不能完美模拟 LaunchServices(即 Finder 双击)启动,这可能会导致应用无法获得 LaunchServices 授予的某些权限。
  • @JimIngham 虽然我可以做到这一点,但它在启动时崩溃的情况下无济于事
  • 我从您的问题中认为您的应用程序仅在 lldb 下运行时崩溃,而不是在正常运行时崩溃。但现在听起来,当 Double-Click 更普遍地启动时,它也会崩溃。是这样吗,错误是一样的吗?如果是这样,那么请求独立于调试器的相机访问的 plist 实际上一定有问题。这不是我很了解的事情。
  • 是的,不在 lldb 下运行时会崩溃。我想在 lldb 下运行它来检查它。但后来我又遇到了另一个问题,因为它要使用相机,所以无法运行。
  • 啊,我明白了。它在到达您的主函数之前(在库初始化或类似的东西中)会崩溃还是在主函数之后崩溃?如果它在 main 之后崩溃,则只需将 int foo = 1; while (foo) { sleep(1); } 放入 main,附加 lldb,执行:expr foo = 0 in lldb 并继续。

标签: macos qt lldb


【解决方案1】:

要允许您的应用程序访问相机,您应该有一个Info.plist 文件,其中NSCameraUsageDescription 字段填充了一些内容。

如果您不构建应用程序包 (.app),则可以将 Info.plist 放在可执行文件旁边。 然后下次你用lldb 运行它时,它会要求授权访问相机。 一旦你给它一次,你可能不得不关闭应用程序并重新启动它。

根据我的测试,以下Info.plist内容就足够了:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSCameraUsageDescription</key>
    <string>Video Input</string>
</dict>
</plist>

【讨论】:

  • 好吧,我已经有一个具有 Qt 应用程序所需权限的 plist 文件,我很确定我已经尝试将它放在多个地方。但也许我会再试几次
  • afaik 应用程序包中的Info.plist 仅在通过双击或使用某些 osascript 启动应用程序时使用。如果您运行 lldb,您可能会将完整路径作为 lldb 参数传递给 .app 内的可执行文件。在那种情况下,我认为它不会在上层文件夹中查找 plist 文件。
猜你喜欢
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2013-05-09
相关资源
最近更新 更多