Отладка Visual Studio — точки флага?

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

В основном это может пригодиться, когда вы получаете исключение, выброшенное таким образом, что ваша трассировка стека менее информативна (возможно, обработка ошибок обрабатывается в отдельном потоке, или, возможно, разные пакеты имеют разные настройки оптимизации, поэтому не все напрямую отлаживаемый), вы можете посмотреть и легко увидеть, какие строки кода были выполнены, и очень быстро сузить источник исключения. Я знаю, что вы можете поместить количество попаданий в обычные точки останова, и вы можете просто установить очень высокое значение, чтобы предотвратить фактический разрыв в этих точках, но счетчики точек останова не сразу видны, поэтому вам нужно наведите курсор на них один за другим, чтобы увидеть, где остановилось выполнение. Это обеспечило бы непосредственный след, ведущий прямо к точке, где что-то пошло не так — например, по отсутствующим точкам, чтобы выяснить, где находится Пакман.

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


person Darrel Hoffman    schedule 25.10.2012    source источник


Ответы (1)


Рассматривали ли вы возможность использования точек трассировки? Вы добавляете их через обычное меню точек останова, но вам нужно выбрать опцию When hit...:

введите здесь описание изображения

В появившемся окне у вас есть несколько доступных системных переменных, которые будут описывать, кто вызывал вашу точку трассировки — давайте добавим , hits: {hits++} к значениям по умолчанию (я отметил красным важные части):

введите здесь описание изображения

Наконец, определите переменную hits в классе, где вы разместили точку трассировки:

class Program
{
#if DEBUG
    private static int hits;
#endif
...

Запустите свой код в отладчике VS, и вы должны увидеть в своих журналах Immediate/Output (в зависимости от ваших настроек), как показано ниже:

Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 1
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 2
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 3
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 4
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 5
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 6
Function: Program.Main(), Thread: 0x1604 Main Thread, hits: 7

Надеюсь, поможет:)

person Sebastian    schedule 26.10.2012
comment
+1, потому что я вижу, что это может помочь в таких вещах, но у нас уже есть системы для вывода сообщений на консоль в коде, поэтому это добавляет лишь немного - проблема в том, что код создает такое огромное количество вывода, что он быстро выталкивается из буфера консоли. Я действительно ищу какой-то видимый флаг в самом коде, если он существует. - person Darrel Hoffman; 26.10.2012