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