如何找出失败断言的位置? (在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 编辑器作为一个整体进行调试。
- 找出实际编辑器的位置(在 Unity Hub 中安装选项卡的右键菜单中)
- 使用 Visual Studio 打开该 EXE(字面意思是 "Open project" 选择)
- 转到解决方案属性 -> 参数并添加:
-projectPath "PATH_TO_YOUR_UNITY_PROJECT_DIRECTORY"
- 调试 -> 开始调试(或 F5)
- 如果您得到断言等,请单击 "Retry"。
第 3 步很重要,因为无论出于何种原因,如果以调试方式启动,Unity 不会显示 "open a project" 选项,而是自行关闭。这就是让我认为不支持外部调试的原因。
正在编写 C++ DLL 以便从 Unity3D 使用。 如果我将 DLL 构建为发布版,我目前会得到一些未定义的行为废话。如果构建为调试构建,将显示以下弹出窗口:
不幸的是,错误重定向到向量 class 而不是它在我自己的代码中实际使用的地方。 我知道是什么 DLL 函数导致了这种情况,但我无法找出为什么会发生这种情况,因为有很多向量处理。我确实怀疑一些多线程问题。
但是我如何找出哪一行,也就是哪个断言失败了? 我似乎无法使用 try-catch 块捕获断言。
非常感谢:)
事实证明,可以使用附加的 DLL 将 Unity 编辑器作为一个整体进行调试。
- 找出实际编辑器的位置(在 Unity Hub 中安装选项卡的右键菜单中)
- 使用 Visual Studio 打开该 EXE(字面意思是 "Open project" 选择)
- 转到解决方案属性 -> 参数并添加: -projectPath "PATH_TO_YOUR_UNITY_PROJECT_DIRECTORY"
- 调试 -> 开始调试(或 F5)
- 如果您得到断言等,请单击 "Retry"。
第 3 步很重要,因为无论出于何种原因,如果以调试方式启动,Unity 不会显示 "open a project" 选项,而是自行关闭。这就是让我认为不支持外部调试的原因。