【问题标题】:Xcode doesn't stop execution on assertion failure when debugging Unity Editor调试 Unity 编辑器时,Xcode 不会在断言失败时停止执行
【发布时间】:2021-10-29 20:19:30
【问题描述】:

我目前正在为 Unity Engine 开发原生插件。所以我的自定义 c++/objective-c++ 代码在 Unity Editor 进程中运行。断点工作得很好,但是当断言失败发生时,编辑器就会崩溃,Xcode 会说 Finished running Unity 而不是停止调试器。

我有两种情况可能会出现断言失败:

  1. 我自己的 c++/objective-c++ 代码中的断言。
  2. Xcode 验证(例如 Metal API 验证)

在这两种情况下,Editor 都会崩溃,Xcode 显示Finished running Unity,然后出现 Unity Crash Reporter,最后出现 macOS crash Reporter。

要从 Xcode 启动 Unity 编辑器,我按照以下指南操作:https://docs.unity3d.com/Manual/XcodeFrameDebuggerIntegration.htmlCapturing a frame from Unity Editor with Xcode 部分)

当断言失败发生时,如何让 Xcode/Unity 编辑器停止执行并显示行/断言信息?

【问题讨论】:

    标签: xcode macos unity3d objective-c++


    【解决方案1】:

    这是 Xcode 中的一个设计“功能”。我在 C++ 中注意到了这种行为,对于 Obj-C++ 也是如此。

    您需要手动添加异常断点。看这里 - How to add Exception Breakpoint in Xcode?

    启用异常断点例外 - 全部突破 - 投掷

    我还建议启用所有内存断点。看这里 - https://developer.apple.com/library/archive/documentation/Performance/Conceptual/ManagingMemory/Articles/MallocDebug.html

    【讨论】:

    • 不是这样,我在问这个问题之前尝试启用它们。由于某种原因,它不起作用。
    • 在产品下 -> 编辑方案 -> 信息 - 你设置调试了吗?
    • 同时检查 Build Settings -> Generate Debug Symbols。应该是调试。我确定你知道了,但请检查以防万一。
    • 是的,我构建了调试配置并启用了生成调试符号。否则断点将不起作用。
    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多