我们如何使用WPF / C#可执行文件调试DLL(使用本机C / C ++的bulit)源?

问题描述 投票:1回答:1

假设我们有一个名为A(A.exe)的WPF / C#项目。它使用的是使用C ++ / CLI构建的DLL;它是项目B(B.Dll)而项目B依赖于项目D,它也是使用本机C / C ++(D.Dll)构建的DLL。

简单地A.exe - >使用B.Dll - >使用D.Dll

这是我的原生环境--Windows 10,Visual Studio 2017,Visual C / C ++ 141 .NET 4.6.1 / 4.7.1。

请注意,C ++ / CLI(CLR)项目是本机C / C ++函数的包装器,这意味着它被用作本机C / C ++和WPF / C#之间的中介,以及在一个Visual Studio解决方案下构建的所有项目,因此相应的项目被添加为其他项目的参考。

如上所述,启动程序是A.exe,它是WPF / C#项目。

问题是我无法通过Visual Studio 2017运行项目时调试C / C ++。

以下我已经尝试过的事情:

  • 在所有项目中将工作目录设置为构建路径(所有DLL,PDB和exe)。
  • 在Visual Studio 2017中设置符号路径。
  • 在各个项目中将Debugger Type设置为Mixed(在Project properties - > Debugging下)。
  • 设置(选中)Use Managed Compatibility Mode(在Visual Studio Debug-> Options-> Debugging下)。
  • 在WPF项目中设置(选中)Enable native code debugging选项(项目属性 - >调试 - >调试器引擎)。

至少在C ++代码上标记的单个断点上,我无法破坏执行。请帮忙解决这个问题。

谢谢。

c# visual-studio visual-c++ c++-cli visual-studio-debugging
1个回答
0
投票

每个项目的目标输出文件名应该不同,否则首先加载模块的符号将对调试器可见。在我的情况下,A和D具有类似的目标输出文件名(不是暗示项目名称)。由于A是目标可执行文件,因此其pdb会覆盖Projects D的pdb。不过,配置我在问题中提到的内容是明智的。

© www.soinside.com 2019 - 2024. All rights reserved.