这篇文章主要讲解了“c#为什么不能调试C++生成的DLL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c#为什么不能调试C++生成的DLL”吧!
C++生成的DLL被C#代码引用,就这么简单的一个例子,用debug方式启动,但不能进入c++源码中。两个项目都在同一个解决方案里面。
网上相关的帖子:
1)https://blog.csdn.net/chunleixiahe/article/details/53428429
2) https://blog.csdn.net/tangyanzhi1111/article/details/8597766?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-4&spm=1001.2101.3001.4242
调试方法:【dll工程和调用dll的exe工程在同一个解决方案中】
dll工程,属性-配置属性-调试-把 命令 为 调用该dll的exe工程的bin\Debug\*.exe
dll工程,属性-配置属性-调试-把 调试器类型 设置为 仅限本机
dll工程,属性-配置属性-常规-把输出目录设置为 调用该dll的exe工程的bin\Debug目录下
在dll工程中打好断点,然后重新生成dll工程,为了输出dll到设置的目录下
然后
exe工程,属性-调试-启用非托管代码调试
exe工程,设置为启动项目
好了
运行,OK
上面的步骤是参考了网上很多资料总结出来的,可能有的设置没有用,不过反正全部设置OK了之后是肯定行的
3)https://blog.csdn.net/zhousiwei/article/details/81204290?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
4)https://docs.microsoft.com/zh-cn/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2019#BKMK_Specify_symbol_locations_and_loading_behavior
5)当前不会命中断点还未为文档加载任何符号——c#联调c++库,无法进入库断点
https://blog.csdn.net/wangMaryann/article/details/105681962
6)https://blog.csdn.net/leo_wc/article/details/76060565 ( 工具-选项-调试 -把(启用“仅我的代码”)前面的勾去掉 )
7)https://bbs.csdn.net/topics/397364420
所有这些都没有解决我的问题:最后发现 工具-选项-调试 -把(启用“仅我的代码”)前面的勾去掉同时还要 使用托管兼容模式。c++项目设置中调试器类型要设置为自动(不要设置为仅限本机)。不知道为什么这样设置才可以调试从C#进入c++代码,猜想最大的原因是我的c++中还引用了另一个C#写的dll,这个DLL的引入就导致本C++项目需要clr的支持,所以调试就要用托管兼容模式和调试器类型为不仅仅限本机。
感谢各位的阅读,以上就是“c#为什么不能调试C++生成的DLL”的内容了,经过本文的学习后,相信大家对c#为什么不能调试C++生成的DLL这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。