Проблемы с просмотром нетривиальных выражений в отладчике Visual Studio - PullRequest
4 голосов
/ 21 сентября 2011

В основном моя проблема заключается в том, что я ожидаю, что Visual Studio (2010 Professional) сможет оценить любое выражение Visual C ++ в окне наблюдения, которое оно обрабатывает в отлаживаемом коде, но, очевидно, что-то препятствует этому. Например, при работе с CString при оценке метода IsEmpty для CString в окне просмотра появляется ошибка Member function not found, как и при сравнении базовых равенств (в отлаживаемом коде проблем, очевидно, нет).

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

Обновление / Пример:

CString blah = _T("blah");

Вызов blah.IsEmpty() в моем коде работает нормально, но в окне просмотра отладчика я получаю сообщение об ошибке выше (CXX0052). Содержимое переменной blah можно увидеть в окне просмотра.

1 Ответ

6 голосов
/ 13 июня 2012

Я мог бы воспроизвести вашу проблему, и действительно, окно просмотра VS показывает Member function not found вместе с кодом ошибки CXX0052. enter image description here

В документации MSDN Я обнаружил, что эта проблема возникает из-за вызова встроенной функции, функция-член CString::IsEmpty(), вероятно, как-то встроена (это то, что видит оценщик Watch Window), чтобы Решите проблему, сначала откройте конфигурацию вашего проекта и отключите встраивание

enter image description here

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

enter image description here

В-третьих, очистите и восстановите свое решение.

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

enter image description here

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