我们如何使用 WPF/C# 可执行文件调试 DLL(使用本机 C/C++ 构建)源代码?
How can we debug DLL (bulit with native C/C++) source with WPF/C# executable?
假设我们有 WPF/C# 个名为 A (A.exe
) 的项目。
它使用用 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#project.
问题是我无法调试 C/C++ 而 运行 项目到 Visual Studio 2017.
以下我已经尝试过的事情:
在所有项目中设置工作目录以构建路径(所有 DLL、PDB 和 exe)。
设置符号路径 Visual Studio 2017.
在各个项目中将 Debugger Type
设置为 Mixed
(在 项目属性 -> 调试 下)。
设置(选中)Use Managed Compatibility Mode
(在Visual Studio调试->选项->调试).
在 WPF 项目中设置(选中)Enable native code debugging
选项(项目属性->调试->调试器引擎).
至少在 C++ 代码上标记的单个断点上,我无法中断执行。
请帮助解决这个问题。
谢谢。
每个项目的目标输出文件名应该不同,
否则首先加载的模块的符号将对调试器可见。
在我的例子中,A 和 D 具有相似的目标输出文件名(不暗示项目名称)。由于 A 是目标可执行文件,它的 pdb
会覆盖项目 D 的 pdb
。
尽管如此,配置我在问题中提到的东西是明智的。
假设我们有 WPF/C# 个名为 A (A.exe
) 的项目。
它使用用 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#project.
问题是我无法调试 C/C++ 而 运行 项目到 Visual Studio 2017.
以下我已经尝试过的事情:
在所有项目中设置工作目录以构建路径(所有 DLL、PDB 和 exe)。
设置符号路径 Visual Studio 2017.
在各个项目中将
Debugger Type
设置为Mixed
(在 项目属性 -> 调试 下)。设置(选中)
Use Managed Compatibility Mode
(在Visual Studio调试->选项->调试).在 WPF 项目中设置(选中)
Enable native code debugging
选项(项目属性->调试->调试器引擎).
至少在 C++ 代码上标记的单个断点上,我无法中断执行。 请帮助解决这个问题。
谢谢。
每个项目的目标输出文件名应该不同,
否则首先加载的模块的符号将对调试器可见。
在我的例子中,A 和 D 具有相似的目标输出文件名(不暗示项目名称)。由于 A 是目标可执行文件,它的 pdb
会覆盖项目 D 的 pdb
。
尽管如此,配置我在问题中提到的东西是明智的。