无法调试C#中加载的C++ dll。

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

我想调试一个用C++制作的dll,而它在一个用Release模式从C#构建的可执行文件中。C#应用程序应该是不知道的。在我运行C#程序后,我能够手动注入dll,目前打开了另一个窗口(所以我知道这是成功的)。

我在VS2019中以Debug模式构建dll。我去 Debug > Attach to Process. 当我放一个断点的时候,它告诉我说不会被击中,因为符号没有加载。注入后确实没有被击中。该dll没有出现在 Debug > Windows > Modules

我尝试了同样的任务,但这次是用 notepad.exe 作为目标,而不是我的C#应用程序。它完美地工作了。我猜记事本是用C++或C语言而不是C#语言构建的。

是否不可能在不接触C#项目的情况下调试我注入的C++ dll?

c# c++ debugging dll module
1个回答
4
投票

该dll没有出现在 Debug > Windows > Modules

看输出窗口,它会告诉你它在运行时加载的每一个库,是否找到了它的符号。

如果它说没有找到符号,请确保在 .pdb 文件是在同一个文件夹里,名字也是一样的 .dll,然后再试一次。

另外由于你正在调试一个.Net应用程序,请确保你的调试器也设置为调试本地代码(C++库),因为默认情况下,VS调试器只会将托管调试器附加到应用程序上。enter image description here

最后需要检查的是,确保在VS的选项中没有选择 "Just My Code "调试,因为从.Net主机应用程序的角度来看,你要调试的库并不被认为是 "我的代码"。

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