首页 > 解决方案 > 如何找出失败断言的位置?(在 Unity 中调用 debug-build DLL)

问题描述

编写 C++ DLL 以从 Unity3D 使用。如果我将 DLL 构建为发行版,我目前会得到一些未定义的行为废话。如果构建为调试构建,则会显示以下弹出窗口:

在此处输入图像描述

不幸的是,错误重定向到向量类,而不是我自己的代码中实际使用它的地方。我知道是什么 DLL 函数导致了这种情况,但我不知道为什么会发生这种情况,因为有很多向量处理。我确实怀疑一些多线程问题。

但是,我如何找出哪个特定行,也就是哪个断言失败?我似乎无法使用 try-catch 块捕获断言。

非常感谢提前:)

标签: c++unity3dvectorassert

解决方案


事实证明,可以使用附加的 DLL 将 Unity 编辑器作为一个整体进行调试。

  1. 找出实际编辑器的位置(在 Unity Hub 中安装选项卡的右键菜单中)
  2. 使用 Visual Studio 打开该 EXE(字面意思是“打开项目”选项)
  3. 转到解决方案属性-> 参数并添加:-projectPath "PATH_TO_YOUR_UNITY_PROJECT_DIRECTORY"
  4. 调试 -> 开始调试(或 F5)
  5. 如果您收到断言等,请单击“重试”。

第 3 步很重要,因为无论出于何种原因,如果作为调试启动,Unity 不会显示“打开项目”选项,而是会自行关闭。这就是让我认为不支持外部调试的原因。


推荐阅读