我制作了一个 DLL,其中包含一个托管 C++ 类,该类包装了 C 库的一些功能。我有一个引用托管 C++ DLL 的 C# 测试项目。C#项目中开启了非托管调试,我在C++ DLL项目中设置了Debugger Type=Mixed。这是我所拥有的图表:
C# 控制台应用程序 -> 包装器 DLL -> 托管 C++ 类 -> 非托管 C++ 方法(在包装器 DLL 中实现)-> C 静态库
我在托管包装类和 DLL 中的非托管方法中都设置了断点。当我开始调试时,我的所有断点都保持红色。托管包装类中的断点会被命中,但非托管方法中的断点不会。奇怪的是,当我尝试进入任何非托管方法时,调试器“跳过”非托管 C++ 方法并直接进入 C 静态库中的函数。那时,调用堆栈显示 [External Code],我希望它显示我的非托管 C++ 方法。
关于这里可能发生的事情有什么想法吗?