Вывести наблюдаемую переменную Visual Studio в файл - PullRequest
8 голосов
/ 26 августа 2009

Есть ли способ в Visual Studio (2008, если это имеет значение), в котором я могу в режиме отладки / прерывания записать содержимое переменной в текстовый / XML-файл?

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

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

Помимо попыток достичь точки останова, изменить код и переписать, чтобы сделать регистратор лучше, есть ли способ не потерять эти данные в памяти?

Ответы [ 3 ]

19 голосов
/ 26 августа 2009

Один из способов сделать это - использовать непосредственное окно (меню Отладка -> Windows -> Немедленно ). В появившемся окне вы можете использовать "?" запросить значение переменной.

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

?history

Вы можете скопировать и вставить оттуда вывод в текстовый файл или, в качестве альтернативы, попросить Visual Studio записать все выходные данные командного окна. Для этого введите:

>log "c:\test.log"
?history
>log off

Log является псевдонимом для Tools.LogCommandWindowOutput и принимает следующие параметры:

Tools.LogCommandWindowOutput [filename] [/on|/off] [/overwrite]

Ознакомьтесь со статьей MSDN Команда вывода окна команды журнала для получения дополнительной информации.

3 голосов
/ 17 ноября 2015

Благодаря ответу Ричарда , это работает для меня.

System.IO.File.WriteAllBytes(@"c:\Temp\temp.txt", myVar);

Убедитесь, что C:\Temp существует.

Причина записи в папку, а не в корень C:\ заключается в том, чтобы избегать UnauthorizedAccessException, когда Visual Studio не запускается от имени администратора.

2 голосов
/ 26 августа 2009

Я думаю, что мой ответ в значительной степени такой же, как и у Джеймса Пикрелла, но из «Немедленного окна» вы также можете сделать что-то вроде этого:

My.Computer.FileSystem.WriteAllText("c:\temp.txt",history,True)

Это выведет содержимое переменной «history» в файл с именем c: \ temp.txt.

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