DebuggerStepThrough, DebuggerHidden não funciona em um método de espera assíncrona

Quando você liga o"Quebrar quando uma exceção é lançada" recurso no depurador do Visual Studio, ele quebra em todos os lugares para os tipos de exceção selecionados. A maneira de dizer para não interromper um método específico édecorar esses métodos comDebuggerStepThrough atributo (ouDebuggerHidden).

Este,evidentemente, não funciona para umasync por algum motivo. Aqui está um trecho que reproduz o problema. O depuradorvai quebrar dentro doTestAsync mesmo que esteja marcado com os atributos enão quebrar por dentroTest conforme exceto (a única diferença entre eles é a primeira é marcada com oasync palavra-chave):

public class Attributes
{
    public async Task Run()
    {
        await TestAsync();
        await Test();
    }

    [DebuggerHidden]
    [DebuggerStepThrough]
    public async Task TestAsync()
    {
        try
        {
            throw new Exception("Async");
        }
        catch
        {
        }
        await Task.Delay(100);
    }

    [DebuggerHidden]
    [DebuggerStepThrough]
    public Task Test()
    {
        try
        {
            throw new Exception("sync");
        }
        catch
        {
        }
        return Task.Delay(100);
    }
}

Então, esse comportamento é pretendido? Isso é um bug? Existe uma solução alternativa?

questionAnswers(1)

yourAnswerToTheQuestion