如何找出失败断言的位置? (在Unity中调用debug-build DLL)

How to find out the location of a failed assert? (Calling debug-build DLL in Unity)

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

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

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

非常感谢:)

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

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

第 3 步很重要,因为无论出于何种原因,如果以调试方式启动,Unity 不会显示 "open a project" 选项,而是自行关闭。这就是让我认为不支持外部调试的原因。