调试从 C++ 调用的 C# dll(嵌入了 Mono)
Debug a C# dll called from C++ (with Mono embedded)
我有一个用 C++ 编写的 运行time(嵌入了 Mono),它使用 mono_jit_exec
和 mono_runtime_invoke
调用用 C# 编写的 dll 中的函数。胶水代码是用 CppSharp 生成的——我认为这在这里不相关,但只是提一下。
到目前为止一切正常,我可以双向通信。
我现在想要的是仅调试 C# 代码,使用 Visual Studio(我在 macOS 上使用的是 2019 版)。所以在我的 C# 项目中,我转到 运行 配置 并选择 启动外部程序 选项指向我的 C++ 程序集。在那之后,我设置了一些断点,但是当我 运行 在调试模式下的 C# 项目时,它们永远不会被触发。
为什么不工作 - 是否还有其他事情需要完成?是不是因为涉及到Mono?
好的,所以答案是目前不支持。
解决方法是使用 Visual Studio 或 Visual Studio 代码的插件进行远程调试,如 Unity does.
一个可用的扩展名是 VS Code Mono Debug, which is based on the SDB: Mono Soft Debugger Client。
我有一个用 C++ 编写的 运行time(嵌入了 Mono),它使用 mono_jit_exec
和 mono_runtime_invoke
调用用 C# 编写的 dll 中的函数。胶水代码是用 CppSharp 生成的——我认为这在这里不相关,但只是提一下。
到目前为止一切正常,我可以双向通信。
我现在想要的是仅调试 C# 代码,使用 Visual Studio(我在 macOS 上使用的是 2019 版)。所以在我的 C# 项目中,我转到 运行 配置 并选择 启动外部程序 选项指向我的 C++ 程序集。在那之后,我设置了一些断点,但是当我 运行 在调试模式下的 C# 项目时,它们永远不会被触发。
为什么不工作 - 是否还有其他事情需要完成?是不是因为涉及到Mono?
好的,所以答案是目前不支持。
解决方法是使用 Visual Studio 或 Visual Studio 代码的插件进行远程调试,如 Unity does.
一个可用的扩展名是 VS Code Mono Debug, which is based on the SDB: Mono Soft Debugger Client。