Как выполнить пошаговые инструкции при отладке C#?

У меня есть проект С#, над которым я работаю, и я пытаюсь отладить проблему, которая вызывает необработанное исключение. Проблема в том, что всякий раз, когда я ставлю точку останова, и она срабатывает, если я нажимаю «Шаг в», она просто возобновляет выполнение вместо перехода к следующей инструкции. Кто-нибудь знает, как выполнять инструкции С# 1 за 1 вместо возобновления выполнения?

Я использую Visual Studio 2019 в Windows 10 для отладки. Проект представляет собой решение с несколькими проектами, где основной проект написан на C#, а другие написаны на C++ и C. Я могу успешно загрузить символы для проекта C#.

Вот репозиторий github.

Редактировать:

Проект, над которым я работаю, — это эмулятор NES под названием Mesen, и проблема, которую я пытаюсь отладить, — это необработанное исключение во время онлайн-игры. Исключение срабатывает, по-видимому, случайным образом, и я пробовал несколько действий, чтобы попытаться вызвать его, но это все равно произошло только само по себе.

private void StartEmuThread()
{
    if (_emuThread == null) {
        _emuThread = new Thread(() => {
            try {
                InteropEmu.Run();
                _emuThread = null;
            } catch(Exception ex) {
                MesenMsgBox.Show("UnexpectedError", MessageBoxButtons.OK, MessageBoxIcon.Error, ex.ToString());
                _emuThread = null;
            }
        });
        _emuThread.Start();
    }
    UpdateMenus();
}

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

Вот скриншот из визуальной студии, когда я попал в точку останова на InteropEmu.Run()

И здесь он возобновляется после того, как я нажимаю шаг вверху на панели инструментов отладки.

Вот исключение, которое я пытаюсь устранить

Спасибо

Вы случайно не пытаетесь "вступить" в метод, который не является частью исходного кода вашего проекта?

Xerillio 20.12.2020 19:50

Нет, или, по крайней мере, я так не думаю, но это правда, что в проектах C++ нет доступных символов. На самом деле с символами компилируется только основной проект, остальные даже не отображаются в списке модулей.

jumpindonuts 20.12.2020 19:58

Вы пытались показать окно «Исключения» (меню «Отладка») и поставить галочку рядом с «Исключениями CLR», чтобы VS прерывался, как только исключение выбрасывается / прерывается в строке, которая выдает?

Caius Jard 20.12.2020 20:09

Да, при отладке я перешел к настройкам исключений и проверил System.Runtime.InteropServices.SEHException, что я обычно и получаю, но все, что мне дали, это строка кода, вызывающая исключение. Я прокомментировал это и буду проводить дополнительные тесты, но я все еще не могу выполнить один шаг по коду.

jumpindonuts 20.12.2020 20:14

Публикация записи экрана может помочь. У вас включен Just My Code

Caius Jard 20.12.2020 20:57

Только мой код включен в Инструменты > Параметры > Отладка. Также я добавил несколько скриншотов и подробностей об ошибке, которую я устраняю.

jumpindonuts 20.12.2020 22:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
6
290
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я пробовал несколько разных вариантов сборки, и оказалось, что пошаговое выполнение отключено для сборок выпуска, но не для сборок отладки. Я попробовал отладочную сборку, и на этот раз она сработала.

Другие вопросы по теме