在树莓派上调试.NET应用遇dotnet退出代码0问题求助
.NET远程调试树莓派时程序直接退出(代码0)的排查方案
1. 修正路径解析问题
配置中存在路径格式错误,且~在调试器环境下可能无法被正确解析:
args里的~//dev重复斜杠会导致路径无效,改为单斜杠的相对路径~/dev/iot/soil-moisture/SoilMoisture.dll,或更稳妥的绝对路径(如/home/username/dev/iot/soil-moisture/SoilMoisture.dll)cwd同样替换为绝对路径,避免shell对~的解析异常
2. 强制调试器入口暂停
控制台应用若逻辑简单、执行时间极短,调试器还未完成附加程序就已正常结束(退出码0表示无异常终止)。将stopAtEntry改为true,强制程序在入口处暂停,验证调试器能否正常连接并触发断点。
3. 调整控制台输出配置
当前console设为internalConsole可能无法显示程序实际输出,无法判断执行逻辑是否符合预期。可修改为:
"console": "integratedTerminal"
或externalTerminal,方便查看程序运行时的输出信息。
4. 验证VSDBG路径与权限
- 确认树莓派上的
vsdbg存在于配置的路径中,通过SSH执行ls ~/vsdbg/vsdbg验证;若路径错误,修正debuggerPath为绝对路径(如/home/username/vsdbg/vsdbg) - 确保
vsdbg具备可执行权限,执行chmod +x ~/vsdbg/vsdbg赋予权限
修改后的示例配置
{ "version": "1.0.0", "configurations": [ { "name": ".NET Remote Launch - Framework-dependent", "type": "coreclr", "request": "launch", "program": "/home/username/.dotnet/dotnet", "args": ["/home/username/dev/iot/soil-moisture/SoilMoisture.dll"], "cwd": "/home/username/dev/iot/soil-moisture/", "stopAtEntry": true, "console": "integratedTerminal", "pipeTransport": { "pipeCwd": "${workspaceRoot}", "pipeProgram": "ssh", "pipeArgs": ["username@host"], "debuggerPath": "/home/username/vsdbg/vsdbg" } } ] }
内容的提问来源于stack exchange,提问作者Maciej Skuratowski
相关产品推荐
相关产品推荐

