Отладка Визуализатор использовать вызов метода / функции члена в предварительном просмотре? - PullRequest
7 голосов
/ 08 июня 2011

Использование Visual Studio 2010 с собственным C ++. Можно ли при редактировании autoexp.dat использовать результаты вызова метода в предварительном просмотре визуализатора отладки?

Например, если мой класс - Персона, как я могу сделать что-то вроде:

MyNamespace::Person{
  preview(
    #("FirstName=", $e->GetFirstName())
  )
}

(Вы можете спросить, почему я не просто получаю данные о закрытых переменных-членах, и это потому, что GetFirstName () делегирует сторонний вызов библиотечного метода, поэтому у меня нет доступа к члену данных. Другой причиной может быть метод выполняет некоторые вычисления.)

Ответы [ 2 ]

3 голосов
/ 26 сентября 2014

Возможно, вы захотите взглянуть на следующее:

См. Комментарии о пользовательских функциях здесь, чтобы узнать о некоторых людях:

1 голос
/ 16 июня 2011

Нет, отладчик Visual Studio поддерживает только непосредственное чтение виртуальной памяти. Поддержка e-> GetFirstName () потребует проведения самоанализа в функции GetFirstName (), что может быть очень сложно, если GetFirstName () нетривиален или виртуален (что еще хуже, у GetFirstName () могут быть побочные эффекты или сбой). Изменение autoexp.dat не позволит вам обойти эту проблему.

Если вы действительно хотите получить эту функциональность, вы можете добавить новую функцию-член только для отладки, такую ​​как std :: string * _firstName и указать ее на GetFirstName () при построении Person, затем использовать разыменование autoexp.dat и отобразить это переменная для вас.

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