使用异步方法使用SourceLink V2调试。有可能吗?

时间:2018-03-27 13:18:07

标签: c# .net async-await visual-studio-debugging sourcelink

我们开始在项目上使用SourceLink V2来调试我们的内部nuget包。我们已正确设置(尽我们所知),并且能够成功调试到正常的同步方法。

不幸的是,我们的大部分代码都是异步编写的(使用async / await)。当我们尝试进入任何可以等待的方法时,编译器会跳过该行。我已经确认PDB可用,并且使用" dotnet sourcelink print-urls [path.pdb]"将源代码嵌入到PDB中。

这是一个已知的限制吗?如果是这样,是否有某种解决方法允许这种类型的调试?有没有人使用SourceLink成功调试异步库?

1 个答案:

答案 0 :(得分:1)

不确定SourceLink,但在C#代码中可以使用Async方法进行调试: https://msdn.microsoft.com/en-us/library/jj155813.aspx?f=255&mspperror=-2147217396#Anchor_1

等待任务时,代码执行将跳出当前函数并将控制权交给其调用者。然后在等待的任务完成之后的某个时间点,它将跳转回执行代码之后的await语句。

BTW,在嵌套函数调用中,Step Into步入最深层嵌套的函数。如果在Func1(Func2())之类的调用上使用Step Into,调试器将进入函数Func2。调试器实际上是遍历代码语句而不是物理行。例如,if子句可以写在一行上。