当前位置:  开发笔记 > 编程语言 > 正文

如何附加调试器从托管(C#)包装器步入本机(C++)代码?

如何解决《如何附加调试器从托管(C#)包装器步入本机(C++)代码?》经验,为你挑选了2个好方法。

我有一个C++函数调用的包装器,我从C#代码调用它.如何在Visual Studio中附加调试器以进入本机C++代码?

这是我所拥有的包装器,它调用C++文件中定义的GetData():

    [DllImport("Unmanaged.dll", CallingConvention=CallingConvention.Cdecl, 
               EntryPoint = "GetData", BestFitMapping = false)]
        public static extern String GetData(String url);

代码崩溃,我想调查根本原因.

谢谢,尼基尔



1> Lou..:

检查项目属性页面上的Debug选项卡.应该有一个"启用非托管代码调试"复选框.当我们为旧的c ++ DLL开发新的.NET UI时,这对我有用.

如果您的非托管DLL是从另一个项目构建的(有一段时间我们是使用VS6构建的),请确保您拥有DLL的pdb文件,以便进行调试.

另一种方法是使用C#exe作为目标exe从DLL项目运行,然后可以正常调试DLL.



2> Rob Walker..:

除了Lou建议启动调试器之外,您还可以通过单击"附加到进程"对话框中的"选择..."并选择"托管代码"和"附加到现有进程"来选择使用哪些调试引擎本地代码'.

以这种方式调试称为混合模式调试.有关一些提示,请参阅此博客文章.

我相信64位进程不支持这种情况......虽然在这一点上会喜欢错误.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有