Broken std :: карта визуализатора в VS2005 - PullRequest
0 голосов
/ 09 июля 2009

Я использую компилятор Intel и Visual Studio, и я не могу отлаживать значения в картах. Я получаю быстрый предварительный просмотр, который показывает размер карты, но элементы отображаются только как "(ошибка)", я проиллюстрирую на быстром примере, я создал карту с одной записью myMapVariable [6] = 1 ;

если я наведу курсор мыши, я получу это «myMapVariable 1» и в окне просмотра я получаю то же самое, и расширение плюс дает одну дочернюю запись, которая говорит name = "(error)" и value = 0 (что неверно).

Я добавил строку в мой файл отладки autoexp.dat, который показывает необработанные переменные-члены дочернего элемента, называемые [raw members]. Я в значительной степени достиг предела своей способности копаться в этом дальше без посторонней помощи, поэтому я хотел бы спросить, может ли кто-нибудь здесь предоставить некоторые идеи.

Ответы [ 3 ]

1 голос
/ 09 июля 2009

Скорее всего, вы используете агрессивные настройки оптимизации. По крайней мере, ваш скриншот типичен для такого рода вещей. В этом случае отладчик активно вставляет горячие значения в регистры, и может случиться так, что в момент остановки значения, необходимые для правильной визуализации всей карты, уже отбрасываются и перезаписываются чем-то еще, что достаточно (как, скажем, указатель на текущий узел). Я полагаю, что Intel C ++, хорошо известная своей высококачественной оптимизацией, делает подобные вещи даже чаще, чем VC ++ (но я видел это и с последними достаточно часто).

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

0 голосов
/ 16 декабря 2010

Мне никогда не удавалось решить эту проблему с помощью Intel, но теперь я перешел на последний компилятор Visual Studio VS2010, и это больше не проблема. Я отмечаю это как ответ, потому что я не хочу оставлять оставшиеся без ответа вопросы.

0 голосов
/ 09 июля 2009

Мое единственное предложение - убедиться, что карта инициализирована и находится в области видимости. В противном случае, я не уверен, я никогда не видел этого, но сейчас я использую VS2008.

...