2

Возможный дубликат this question.Как отображать собственные типы при отладке в VS2012 для смешанного режима C++/CLI MFC app

У меня есть проект MFC, который использует/clr-переключатель и некоторый код C++/CLI для использования .Net-компонента. Первоначально это было на VS2005.

При обновлении до версии VS2012 Update 2 во время отладки не были указаны значения или типы для собственных типов данных. Я узнал, что в VS2010 был добавлен новый механизм визуализации собственных типов данных (natvis) и расширен и расширен в VS2012. Следуя информации о that page, я снял флажок Управляемый режим совместимости C++ и Редактирование C/C++ и продолжение. После этого точки останова стали отключенными и перестали ударяться. Используя отладчик «Только управляемый», точки останова были удалены, но никаких значений не было показано.

Наконец, я использовал «смешанный» отладчик и использовал __debugbreak(), чтобы заставить перерыв. Это привело к тому, что только целочисленные значения показывались ТОЛЬКО, если они являются локальными авто; и типы данных были правильно подобраны. Однако значения std::string или CString не показаны, и вместо этого их тип отображается в столбце значений. Аналогично, указатели, члены классов или значения аргументов функций не отображаются, а в столбце значений отображается информация типа, неопределенное значение или вне области видимости.

Поведение согласовано между авто, местными жителями и окнами просмотра, а также курсором мыши на символах.

Как получить собственные типы данных для отображения их значений во время отладки в смешанном режиме C++/CLI MFC приложения VS2012.

Я прочитал this question и подтвердил, что все символы были загружены в окно модулей.

Очевидно, что Microsoft является aware of the issue, и предстоящий CTP Update 3 должен исправить это.

Кроме того, почему мне нужно использовать __debugbreak()?

+0

@knockNrod - Мы пробовали использовать только VS2012 и VS2012 с Update1. Отладка была необычно медленной - каждый F10 занимает 1-2 минуты, чтобы перейти к следующей строке. Это [известно] (https://connect.microsoft.com/VisualStudio/feedback/details/751327/debugger-stepping-in-mixed-mode-application-is-very-very-slow) [выпуск] (http : //connect.microsoft.com/VisualStudio/feedback/details/774026/debugger-hangs-in-managed-code-in-mixed-mode-c-app) с VS2012 для отладки смешанного режима. –

+0

@Per Lundberg - Спасибо тонну. Подтверждено, что Update 3 RC решает медленность, а также собственные значения символов. Однако отладчик должен быть вручную изменен на «Managed Only», в противном случае точки останова не будут удалены. При разбиении с использованием '__debugbreak()' символы не отображаются. –

ответ

2

Пару дней назад Microsoft выпустила Визуальная RC студии Service Pack 3, который может помочь (установка ее сам прямо сейчас). Вот ссылка: http://www.microsoft.com/en-us/download/details.aspx?id=38832

+0

Может подтвердить, что отображение неуправляемых переменных в отладчике теперь работает, по крайней мере для меня, после установки выше. –

+0

Спасибо за. Подтверждено, что Update 3 RC решает медленность, а также собственные значения символов. Однако отладчик должен быть вручную изменен на «Managed Only», в противном случае точки останова не будут удалены. При разбиении с использованием '__debugbreak()' символы не отображаются. –

+0

FWIW, SP3 теперь выпущен (он больше не является RC). –

0

Переустановите Visual Studio 2012 и не применяются Service Pack 2.