C#学习教程:有没有办法调试从C#DllImport调用的c ++ dll?分享


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

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

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

任何建议将被认真考虑。

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

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

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

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

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

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

但是,无论调试模式如何,OutputDebugString()都应该可以工作。

上述就是C#学习教程:有没有办法调试从C#DllImport调用的c ++ dll?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/960000.html

发表评论

邮箱地址不会被公开。 必填项已用*标注