我们如何使用WPF / C#可执行文件调试DLL(使用本机C / C ++的bulit)源?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我们如何使用WPF / C#可执行文件调试DLL(使用本机C / C ++的bulit)源?相关的知识,希望对你有一定的参考价值。
假设我们有一个名为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 ++代码上标记的单个断点上,我无法破坏执行。请帮忙解决这个问题。
谢谢。
每个项目的目标输出文件名应该不同,否则首先加载模块的符号将对调试器可见。在我的情况下,A和D具有类似的目标输出文件名(不是暗示项目名称)。由于A是目标可执行文件,因此其pdb
会覆盖Projects D的pdb
。不过,配置我在问题中提到的内容是明智的。
以上是关于我们如何使用WPF / C#可执行文件调试DLL(使用本机C / C ++的bulit)源?的主要内容,如果未能解决你的问题,请参考以下文章