Как отлаживать автоматически сгенерированный код? - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь увидеть, что происходит в IAsyncStateMachine во время выполнения, и мне крайне необходимо увидеть, какие переменные у него есть и как он вызывается. Я знаю, что вы можете увидеть код с помощью ILSpy ... но мне нужно отладить это.

Есть ли способ? Мне нужно посмотреть, что происходит внутри метода IAsyncStateMachine MoveNext!

public sealed partial class MethodBuilder<T> : Errand.MethodBuilder {

            public static new MethodBuilder<T> Create() => new MethodBuilder<T>();

            public new void Start<TStateMachine>(ref TStateMachine stateMachine) where TStateMachine : IAsyncStateMachine {
                this.myStateMachine = stateMachine;
                this.Task = new Task<T>(this);
                stateMachine.MoveNext(); //i have to see the properties of stateMachine and inside this method !!!!!
            }

            public new void AwaitOnCompleted<TAwaiter, TStateMachine>(ref TAwaiter awaiter, ref TStateMachine machine) where TAwaiter : INotifyCompletion where TStateMachine : IAsyncStateMachine {



            }
            public void SetResult(T result) {
                this.Task.isCompleted = true;
                this.Task.result = result;
            }
            public new void SetStateMachine(IAsyncStateMachine stateMachine) => base.SetStateMachine(stateMachine);
            public new void SetException(Exception ex) => base.SetException(ex);
}

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Из MSDN Как выполнить: Отладка источника .NET Framework .

Чтобы включить отладку источника .NET Framework

  1. В меню «Инструменты» выберите «Параметры».

  2. В диалоговом окне «Параметры» выберите категорию «Отладка».

    • В поле «Общие» установитеВключите пошаговое выполнение исходного кода в .NET Framework.

    • Если вы включили Just My Code, диалоговое окно с предупреждением сообщает, что Just My Code теперь отключен.Нажмите кнопку ОК.

  3. Если у вас не было задано местоположение кэша символов, другое диалоговое окно с предупреждением сообщает, что теперь установлено местоположение кэша символов по умолчанию.Нажмите кнопку ОК.

  4. В категории «Отладка» выберите Символы.

  5. Если вы хотите изменить расположение кэша символов:

    • Откройте узел «Отладка» в поле слева.

    • В узле «Отладка» щелкните Символы.

    • Измените местоположение в символах кэша с серверов символов в этот каталог или нажмите кнопку «Обзор», чтобы выбрать местоположение.

  6. Если вы хотите немедленно загрузить символы, нажмите «Загрузить символы с помощьювышеуказанные местоположения.

    Эта кнопка недоступна в режиме разработки.

    Если вы не решите загружать символы сейчас, символы будут загружаться автоматически при следующем запуске отладки вашей программы.

  7. Нажмите кнопку ОК, чтобы закрыть диалоговое окно «Параметры».

0 голосов
/ 25 апреля 2018

возможно, вы можете использовать debugger.launch после запуска отладчика Visual Studio предложит выбрать версию против

internal class Program
{
    public static void Main(string[] args)
    {
        System.Diagnostics.Debugger.Launch();
        Console.WriteLine("crap");
    }
}
...