如何调试由自定义.NET Core 2宿主加载的托管程序集?
调试自定义.NET Core 2.0宿主中的托管代码
嘿,我刚好之前也折腾过类似的自定义宿主调试问题,给你几个实用的方案试试:
方案一:手动触发调试器附加
- 在你需要调试的托管代码位置,插入一行代码:
System.Diagnostics.Debugger.Launch(); - 启动自定义宿主后,执行到这行代码时会弹出调试器选择窗口,选你正在使用的Visual Studio实例,就能直接进入托管代码的断点调试环节了。
方案二:通过Visual Studio配置调试启动项
- 打开你的原生宿主项目,右键点击项目→属性→切换到调试选项卡
- 在「启动操作」里选择「启动外部程序」,选中你的自定义宿主可执行文件
- 如果宿主启动需要指定加载的程序集或其他参数,在「命令行参数」里补充完整
- 接着在托管代码项目里设置好断点,按F5启动宿主调试,Visual Studio会自动附加到宿主进程,托管代码执行到断点时就会自动停下
方案三:借助环境变量启用调试
- 启动宿主前,先设置两个环境变量:
CORECLR_ENABLE_PROFILING=1CORECLR_PROFILER={E53E7B4E-1C9F-418D-8F5B-205649912C38}(这个GUID是Visual Studio调试器的默认Profiler ID)
- 启动宿主后,打开Visual Studio,通过「调试」→「附加到进程」,选中你的宿主进程,附加类型选择「托管(.NET Core, .NET 5+)代码」,确认后就能调试托管代码了
额外提醒:要确保托管代码项目和宿主使用的.NET Core版本一致,调试时选择的架构(x86/x64)也要匹配,不然可能出现附加失败或者断点不命中的情况。
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

