Visual Studio调试异步方法时如何获取$returnValue?
针对异步方法调试查看返回值的解决方案
在Visual Studio调试异步代码时,$returnValue确实无法捕获已await的异步方法返回值,不过有几种可行的机制可以替代:
临时变量接收返回值
最直接且稳定的方式是把异步方法的返回值赋值给一个临时变量,比如:var asyncResult = await GetDataAsync();调试时直接在监视窗口查看
asyncResult即可,这种方法兼容所有Visual Studio版本,没有额外限制。尝试
$ReturnValue(Visual Studio 2022+)
在Visual Studio 2022及更新版本中,调试器对异步状态机的解析能力有所提升,你可以在监视窗口输入$ReturnValue(注意大写V),部分场景下能直接捕获异步方法的返回值。不过该特性依赖具体的异步代码结构,并非所有场景都能生效。查看异步状态机的局部变量
当单步执行完异步方法回到调用点后,打开局部变量窗口,展开自动生成的异步状态机对象(通常命名为<调用方法名>d__X格式),在其内部字段中(比如<>t__builder关联的属性里)可以找到异步方法的返回值。这种方式需要熟悉.NET异步状态机的结构,可读性相对较差。条件断点打印返回值
若只需在异步方法返回时查看值,可在异步方法的末尾设置条件断点,将条件设为true,然后在断点的「操作」中勾选「打印消息」,输入{returnValue},触发断点时会在输出窗口打印返回值。
内容的提问来源于stack exchange,提问作者millie
相关产品推荐
相关产品推荐

