В Visual Studio я могу построить свою переменную в точке останова? - PullRequest
6 голосов
/ 30 января 2009

В Visual Studio для моей родной программы на C ++ я хочу получить график некоторых переменных во время отладки. В основном я использую текстовое представление объектов путем редактирования autoexp.dat. Но для некоторых переменных лучше иметь график, а не значения в текстовой форме.

До сих пор я использовал функцию plot(const void* address,const char* type) и вызывал ее из Immediate Window , давая адрес переменной и тип, и внутренне приводил ее к нужному типу.

Но у этого метода есть два недостатка:

  • Во-первых, перегрузка функции почти никогда не срабатывает при вызове функции из отладчика (поэтому мне пришлось передавать тип в качестве второго параметра), и вызов функции иногда завершается сбоем, хотя он прекрасно работает при вызове из кода.
  • Во-вторых, вместо написания функции C ++ для построения графиков, мне интересно иметь язык сценариев (например, autoexp.dat или VBScript) для предоставления внутренних данных объекта C ++ без записи any обертка, чтобы я мог использовать сценарий для хранения данных в файле или для их построения.

В общем, мне интересно иметь что-то вроде Matlab или Ch IDE , где я могу построить некоторую переменную извне, когда программа находится в состоянии отладки.

Ответы [ 4 ]

3 голосов
/ 30 января 2009

Начиная с VS 2005 года, Visual Studio включает в себя Визуализаторы , которые почти могли быть разработаны специально для вашей задачи. MSDN объясняет эту концепцию лучше, чем я:

Визуализаторы являются новым компонентом Пользовательский интерфейс отладчика Visual Studio. Визуализатор создает диалоговое окно или другой интерфейс для отображения переменной или объект значимым образом, который является соответствует его типу данных. За Например, HTML визуализатор интерпретирует HTML-строка и отображает результат как это будет выглядеть в браузере окно, растровый визуализатор интерпретирует растровая структура и отображает графическое изображение, и так далее. Немного визуализаторы также позволяют редактировать как просмотреть данные.

См. здесь , чтобы узнать, как его написать.

2 голосов
/ 08 сентября 2012

Вы можете отображать переменные в диаграммах в реальном времени с помощью NetDebugPlot и NetDebugLog .

#include "NetDebugLog.h"

NetLog(myvar);
NetLog("test", myvar2);

NetDebugPlot

1 голос
/ 06 февраля 2009

Как уже отмечали другие, я не уверен, что именно вы хотите построить. Я обычно понимаю, что когда кто-то говорит, что хочет «построить что-то», он обычно подразумевает некоторый массив с числовыми значениями. Если это так в вашем случае, Intel Array Visualizer , возможно, поможет вам. Его можно свободно загрузить, он интегрируется в Visual Studio и может использоваться двумя способами: в качестве отдельного приложения или во время отладки («в то время как в некоторой точке останова»), чтобы вы могли отображать значения массива «во время работы программы».

0 голосов
/ 30 января 2009

Не могли бы вы использовать gnuplot для этого? Выложите данные, которые вы хотите вывести в виде отладочных отпечатков, а затем, пока вы сидите в точке останова, скопируйте их во внешний файл и пропустите через плоттер.

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