【问题标题】:Using SourceLink V2 debugging with async methods. Is it possible?使用带有异步方法的 SourceLink V2 调试。是否可以?
【发布时间】:2018-03-27 13:18:07
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    顺便说一句,在嵌套函数调用中,Step Into 会进入嵌套最深的函数。如果您在 Func1(Func2()) 之类的调用中使用 Step Into,则调试器会单步执行函数 Func2。调试器实际上是逐步执行代码语句而不是物理行。例如,一个 if 子句可以写在一行上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2018-05-15
      • 2012-01-01
      • 1970-01-01
      相关资源
      最近更新 更多