如何在MonoDevelop中调试C#控制台应用?解决连接失败问题
我之前在最新版Mono环境下也碰到过一模一样的问题,那些针对Unity或者旧版本的方案确实帮不上忙。试试下面这些专门适配最新稳定版的排查步骤,应该能解决你的问题:
检查Mono调试组件的完整性
最新版Mono的默认安装偶尔会漏掉调试相关组件。重新运行Mono安装包,选择「自定义安装」,确保勾选Mono Debugger和Debugging Tools相关选项,安装完成后重启MonoDevelop再试调试。排查调试端口占用情况
Mono调试默认会使用特定端口(比如10000、10001),如果被其他进程占用就会连接失败。可以用命令行检查:lsof -i :10000 # 常用调试端口,也可以换成10001试试要是发现有进程占用,杀掉对应的进程;或者进入MonoDevelop的
Preferences > Debugger > Generic Debugger,修改Debugger Port的值(比如改成10002),保存后重启IDE。临时关闭防火墙/安全软件拦截
本地调试的连接请求可能被系统防火墙或第三方安全软件拦截了。临时关闭防火墙,或者把MonoDevelop和mono-sgen(或mono进程)加入信任列表,再尝试启动调试。重置MonoDevelop的调试配置
IDE配置文件损坏也会导致调试异常。先备份好你的IDE配置,然后删除对应的配置目录:- Linux:
~/.config/MonoDevelop - macOS:
~/Library/Application Support/MonoDevelop - Windows:
C:\Users\<你的用户名>\AppData\Roaming\MonoDevelop
删除后重启MonoDevelop,它会自动生成默认配置,再调试你的控制台程序试试。
- Linux:
用命令行手动启动调试排查问题
如果IDE里调试一直失败,试试用命令行启动调试,判断是IDE的问题还是Mono本身的问题:mdb-run bin/Debug/你的程序名.exe要是命令行调试能正常运行,那就是MonoDevelop的配置问题,回到上面的步骤重置配置就行;如果命令行也失败,建议重新下载最新稳定版Mono并完整安装。
内容的提问来源于stack exchange,提问作者Regis May

