混合模式程序集不加载本机C++ pdbs的符号

Usm*_*man 6 mixed-mode c++-cli breakpoints visual-c++

我正在使用C++/CLI中的混合模式程序集.在混合模式程序集中成功加载所有托管模式组装的pdb后,即使本机pdb的信息显示在模块窗格中(即在VS Debug-> Windows-> Modules中),也不会加载本机dll和pdb.

我使用本机DLL并在C++/CLI代码中混合程序集中调用其导出的函数.这里,函数被成功调用,但本机pdb符号未加载,本机代码中的所有断点都显示为空心圆,工具提示表示没有为此加载符号.

我已经完成了所有工作,pdb放在当前目录中以启动托管进程; 删除所有obj和debug文件夹并同时重新编译每个项目; 我甚至使用了ChkMatch实用程序,它显示了Exe中的符号和相应的pdb匹配.

有没有办法在从托管(C++/LCI混合模式)代码调用时启用本机代码的断点?

问候,

乌斯曼

Han*_*ant 16

混合模式调试可能会被击中和错过,大多数是错过.首先检查您是否确实启用了混合模式调试.从C#项目,它是Project + Properties,Debug,Enabled unmanaged code debugging复选框.接下来,64位进程未启用混合模式调试.如果您在64位操作系统上运行,请确保强制.exe以32位模式运行.Project + Properties,Build选项卡,Platform Target = x86.

接下来验证调试器查找.pdb文件的位置.在Debug + Windows + Modules窗口中,右键单击DLL并选择"Symbol load information".最后的喘息是在非托管代码中使用__debugbreak().