托管代码(managed code,C#/VB.NET 等跑在 .NET CLR 上的代码)经常会 P/Invoke 一个 C++ 写的 native dll。这种时候在 native dll 的 C++ 源码里下断点,断点常常是空心的,VS 提示「未为该文档加载任何符号(no symbols have been loaded for this document)」——因为默认的调试器只挂了托管引擎,没有挂 native 引擎。
要让断点命中,需要打开 混合模式调试(mixed-mode debugging),让 VS 同时挂托管和 native 两个调试引擎。步骤如下: