如何将LLDB附加到C# .NET进程并调试动态加载的macOSbundle?



我已经开始为Unity和Unreal编写一个c++中间件。现在,在macOS上,我想将LLDB附加到Unity沙盒项目的进程,以便调试一些问题。我怎么能做这样的事情?

我的中间件是作为 macOS 捆绑包构建的,并通过 C# Unity 脚本动态加载。

public class MyMiddleware
{
[DllImport("MyMiddleware")]
public static extern int SomeFailingFunction();
}
public class SomeBehaviour: MonoBehaviour
{
private void Start() {
MyMiddleware.SomeFailingFunction();
}
}

我在生成捆绑包时嵌入了调试信息。我想调试SomeFailingFunction的C++实现。

看来我可以将LLDB附加到Unity的主进程,只要它不干扰另一个调试器。就我而言,Unity崩溃了,因为我已经在使用Visual Studio的调试器。

另请注意,当您忘记停止 Visual Studio 的调试器、使用 LLDB 并且 Unity 崩溃时,您的场景在重新启动 Unity 时并不总是正确加载。我通过文件管理器使用场景文件(在资产/场景中(启动 Unity 来解决这个问题。

我还不知道有什么更清洁/更方便的方法。最好是能够直接从Visual Studio的调试器中读取调试信息。

最新更新