Как построить график изменения переменных в Visual Studio - PullRequest
7 голосов
/ 07 февраля 2011

Кто-нибудь знает способ построить график изменения наблюдаемой переменной с течением времени в Visual Studio 2010?Т.е., если у вас был следующий код

double someVariable;
for ( int i = 0; i < 20; i++)
{
    someVariable = Math.Pi() * i;
}

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

Дополнительная информация: у меня есть несколько немного разных решателей, и в зависимости от проблемы, которую я решаю, я бы хотел посмотреть разныепеременные, чтобы увидеть, где возникают проблемы.В настоящее время я помещаю log эти переменные в файл журнала, но это значительно замедляет решатель, и мне приходится тратить приличное количество времени на изменение кода отладки для отслеживания проблем.Я ищу более удобный способ сделать это, ориентированный на IDE.Вид визуализатора на стероиды.

Ответы [ 6 ]

7 голосов
/ 07 февраля 2011

Как насчет использования точек трассировки?В VS 2008 (в VS 2010 это несколько отличается) вы просто добавляете обычную точку останова, затем щелкаете по ней правой кнопкой мыши и выбираете «Когда нажимаете ...».

В следующем диалоговом окне установите флажок «Печать».сообщение "и введите что-то вроде

someVariable = {someVariable}

Это просто выведет его значение в окно вывода в IDE.

Снимок экрана:

tracepoint dialog

1 голос
/ 07 февраля 2011

Используйте Perfmon и опубликуйте это значение для счетчика, который может прочитать perfmon.Perfmon выполняет все графики и т. Д. Вам просто нужно опубликовать в perfmon.К сожалению, это не очень хорошо задокументировано и не тривиально.(ну, по крайней мере, это было тривиально для неуправляемого c ++, когда я изучал его)

Я делал это некоторое время назад и использовал некоторые классы, опубликованные в старой статье MSJ.(около 1998 г. или около того)

Я попытаюсь найти некоторые онлайн-документы.

См. этот вопрос для получения некоторых ссылок

Это можеттакже будет полезно

Если вы нашли решение или это работает для вас, пожалуйста, сообщите нам.

1 голос
/ 07 февраля 2011

Простой способ?Нет.

Но вы можете написать его самостоятельно ..

  1. Использовать свойство.
  2. В установщик введите код, который будет регистрировать изменения в некоторой коллекции.Возможно также сэкономить время.
  3. Используйте некоторый элемент управления для построения этой коллекции

Редактировать: Если вы не хотите создавать свойство, вы можете создать некоторый родовой класс, который будет иметьэто свойство и имеет некоторую внутреннюю логику регистрации.

0 голосов
/ 15 августа 2015

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

0 голосов
/ 07 февраля 2011

Разве вы не можете просто определить и массив и записать someVariable в массив [i] внутри цикла? Тогда вы можете сослаться на это после того, как закончите.

double[] x = new double[20];
double someVariable; 
for ( int i = 0; i < 20; i++) 
{
     someVariable = Math.Pi() * i;
     x[i] = someVariable;
} 
0 голосов
/ 07 февраля 2011

Надеюсь, кто-нибудь придумает лучший ответ, но вот что я сделал в аналогичной ситуации ...

Вывод значений в формате CSV на консоль. Оттуда я скопировал бы и вставил в Excel, и позволил Excel сделать некоторые графики для меня. Это работало довольно хорошо, но было полным хлопотом во время сеанса разработки на основе кофеина.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...