Добавить запись в список при отладке в Visual Studio

У меня есть точка в моем коде, где я добавил точку останова. То, что я хотел бы сделать, когда отладчик останавливается в точке останова, - это изменить содержимое списка (в частности, в этом случае я хочу добавить записи). Как изменить содержимое списка во время отладки?

Изменить: Список представляет собой список строк.

Ответы

Ответ 1

Используйте немедленное окно (по умолчанию CTRL + D, я с ключевыми словами С# или в меню Debug > Windows).

Оттуда просто вызовите myList.Add(foo), он вернется, сказав, что выражение было оценено и не имеет значения, но возникает побочный эффект добавления foo.

Ответ 2

Также в окне просмотра вы можете выполнять однострочные операторы (или лучшее выражение).

Просто напишите что-нибудь вроде:

myList.Add("myNewValue")

и нажмите ENTER Он должен работать (по крайней мере, всегда работал у меня)

Ответ 3

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

  • Установить точку останова
  • Щелкните правой кнопкой мыши точку останова и выберите "условия"
  • Поместите свою строку кода в условие (ему не нужно возвращать bool)
  • Run

Когда ваша точка останова будет удалена, код будет выполнен, и отладчик НЕ остановится в точке останова (потому что вы не вернули bool).

Я получил этот совет из блога подсказок Visual Studio: http://blogs.msdn.com/b/zainnab/archive/2010/05/04/set-a-complex-breakpoint-condition-vstipdebug0022.aspx

Вот пример программы, которая иллюстрирует технику:


        static void Main(string[] args)
        {
            List l = new List();
            Console.WriteLine(l[0]);
            System.Console.ReadLine();
        }

Если вы запустите этот код как есть, вы получите исключение. Однако перед тем, как вы это сделаете, добавьте точку останова в строку hte Console.WriteLine().

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

l.Add("hello")

Теперь запустите.

Очевидно, что человек может столкнуться с множеством проблем с этой "функцией" - вы можете изменить поведение своего приложения с помощью точек останова, так что независимая сборка кода ведет себя иначе, чем когда она запускается на вашем компьютере в ваш отладчик. Поэтому будьте очень осторожны...