如何在Visual Studio 2019中调试F#的Async异步块
解决方案
- 首先确认你使用的是Debug配置而非Release配置,Release模式下编译器会优化掉未使用的局部变量,导致调试时无法查看。
- 打开Visual Studio调试配置:依次点击
工具→选项→调试→常规,勾选为F#启用异步调试支持,同时取消勾选启用仅我的代码,保存设置后重启调试会话。 - 你示例代码中的
emailField变量本身无实际有效值:Page.FillAsync返回的是无返回值的Task,你用let!接收得到的是unit类型值,调试器默认不会显示无意义的unit变量,该语句直接改用do!书写即可:do! Async.AwaitTask(page.FillAsync("#xl-form-email",email)) - 如果需要调试其他非unit类型的异步绑定变量仍无法查看,可升级到最新版Visual Studio 2022,旧版本对F#异步计算表达式的闭包变量调试支持存在已知缺陷,新版本已修复多数相关问题。
- 临时调试可选择改用
task { }计算表达式代替async { },F#的Task计算表达式和C# Task模型完全兼容,Visual Studio对其的调试支持更成熟稳定。 - 临时排查也可在变量绑定后添加
System.Diagnostics.Debug.WriteLine(变量名),通过输出窗口查看变量取值,无需依赖局部变量窗口。
内容的提问来源于stack exchange,提问作者Martin Thompson
相关产品推荐
相关产品推荐

