繁体   English   中英

有没有办法调试从 C# DllImport 调用的 C++ dll?

[英]Is there any way to debug c++ dll called from C# DllImport?

我想知道是否有任何方法可以在 VS 2010 中调试从 C# PInvoke 调用的 c++ dll。我尝试将项目附加到 c# 应用程序中,但没有成功 - 没有在断点处停止。

我还尝试在 C++ 项目中使用 OutputDebugString 记录任何内容,但没有使用 PInvoke 调用打印任何内容。 尽管存在这些问题,但实际功能运行良好。

任何建议将被认真考虑。

两者都需要打开相同的选项:项目 > 属性 > 调试选项卡 > 勾选“启用非托管代码调试”选项。

您现在可以在本机 DLL 代码中设置断点,一旦 C# 项目加载 DLL,它就会从空心变为实心。 由于使用了非托管调试引擎,OutputDebugString() 输出将进入输出窗口。

如果您在程序运行时运行 C++ 调试器,然后转到 Debug->Attach To Process->Find your process 并附加到它。 你应该能够调试它。

确保您已使用调试器符号编译了 DLL。 (.pdb) 文件,并且它们位于您从中运行的目录中。

附加时,将“附加到”值更改为“本机”。 该进程不应在托管代码调试器下运行 - 而不是“调试”,使用“运行”命令启动。

此外,DLL 需要使用调试信息进行编译,以便进行任何合理的调试。 确保您没有 P/Invoking 发布版本。

然而,无论调试模式如何,OutputDebugString() 都应该工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM