C ++ BoundsChecker продолжение - PullRequest
       12

C ++ BoundsChecker продолжение

5 голосов
/ 22 ноября 2010

Мы годами работали с BoundsChecker для Visual C ++ 6 (я думаю, что это был также BoundsChecker 5 или 6).Мы перешли на VS2008 (наконец-то!) И теперь нуждаемся в продолжении устаревшего BoundsChecker.

Как там ландшафт?
Какие инструменты есть?
Есть ли в городе новые дети?
Есть ли новые идеи, касающиеся проблем, для которых мы использовали профилировщики памяти?
Ваш недавний опыт использования этих инструментов?
Рекомендации?

Основным приложением является C ++ со многими COM DLL, мы собираемся отслеживать нативные, C ++ и COM утечки и объекты.Программа Bounds Checker для этого размера уже вызывала проблемы с производительностью, разбирая множество данных и некоторые ее ограничения.

Требуется поддержка управляемых приложений (прежде всего C #), хотя это может быть отдельный инструмент.


Смежный (но неполный IMO) вопрос: Современный эквивалент BoundsChecker для Visual Studio 2008


[редактировать]

Пересмотрите комментарий, «В современном C ++ вы просто используете типы самопроверки, и границы никогда не нарушаются» * :

Умные указатели с подсчетом ссылок могут иметь циклические ссылки.Интерфейс COM-компонентов небезопасен, так как требует много ручного управления памятью.У меня были сторонние GDI-дескрипторы утечки сервисов без пользовательского интерфейса, поэтому он провалил наши ночные тесты - производитель обвинил в этом «странный» Microsoft API.Я должен взаимодействовать с библиотеками на основе C, у меня есть тонны унаследованного кода, который предполагает хитрость выделения в смысле числовых рецептов, и имена переменных длиннее 3 букв предназначены для машинисток.У меня есть код от инженеров, для которых std::vector<double>::iterator выглядит гораздо страшнее, чем double ***, удачи в разработке и тестировании без серьезного опыта обработки сигналов.

Поэтому, если вы не приедете сюда, перепишите и инкапсулируйте ядро ​​миллиона строк кода в надежных классах C ++ и убедитесь, что несколько десятков продуктов по-прежнему работают, как и раньше, сохраняйте свою умную сборку при себе.Хотелось бы, чтобы мне не понадобилась проверка памяти, но я делаю.Спасибо.

Ответы [ 4 ]

3 голосов
/ 09 марта 2011

Отказ от ответственности и предупреждение: я работаю на Micro Focus, владельца продуктов DevPartner Studio и BoundsChecker.

BoundsChecker 10.5, часть DevPartner Studio 10.5 (хотя вы можете купить его самостоятельно), поддерживает неуправляемый код Visual Studio 2005, 2008 и 2010 для 32- и 64-разрядных приложений, по сути, так же, как он поддерживает 32-разрядные приложения в Visual Studio 6,0. Расширяя его для поддержки приложений X64, мы обнаружили и исправили довольно много очень старых проблем и начали работать, несмотря на код .NET 4.0, присутствующий в некоторых приложениях VS 2010. Я говорю «вопреки», потому что .NET 4.0, оказывается, делает много очень неприятных вещей в пространстве процессов, делая некоторые вещи, которые Microsoft предупреждает всех остальных, и имеет определенную встроенную устойчивость к инструментам. как BoundsChecker, которые по сути являются гигантскими вирусами.

В любом случае, начиная с этого выпуска (4 февраля), мы обновили его для работы в Windows 7 SP1 (которая пока не совсем общедоступна), и, что касается BoundsChecker, мы также работаем с Visual Studio 2010 SP1 , Мы также обнаружили неприятную ловушку .NET 4.0 и выяснили, как ее не остановить. Эти улучшения и исправления будут доступны в нашем следующем общедоступном обновлении, возможно, в течение ближайшего месяца.

2 голосов
/ 08 марта 2011

У меня огромное приложение (здесь, на работе), и новая программа проверки границ 10.5 (теперь поддерживает 64-битные приложения) в значительной степени работает с ним. Хитрость Макса не в том, чтобы сразу включить все функции проверки в программе проверки границ devpartner. Включите только утечки памяти или просто включите какую-то другую функцию, затем запустите ваше приложение. И во что бы то ни стало исключить модули, которые вам не нужны. Есть довольно много вещей, которые вы можете использовать для настройки ваших настроек, чтобы они работали быстрее. Но да, это требует успеха. Но это название игры в мяч.

Инспектор Intel Параллельно дал нам тысячи и тысячи ложных срабатываний. Не использовал его.

Purify работает только на 32-битных приложениях. то есть небольшие 32-битные нативные приложения. Забудьте об использовании его с управляемым приложением C ++.

И для справки: если у вас большое 32-битное приложение, инструменты анализа памяти в целом не будут работать очень много из-за огромных накладных расходов памяти. А поскольку у вас очень ограниченная память в 32-битном адресном пространстве, вам быстро не хватает места, и инструменты не работают.

2 голосов
/ 24 ноября 2010

Мы оценили Boundschecker, Инспектора Intel и Purify.

Все они были более или менее дерьмовыми.

Для нашего основного приложения BoundsChecker не запустит его через много часов; он работал только для нескольких небольших приложений; но найдите пару вещей (я думаю, что мы все еще общаемся с ними, чтобы выяснить это)

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

Очищение с треском провалилось; мы никогда не могли его использовать.

Мы все еще в подвешенном состоянии по этому поводу.

Макс.

1 голос
/ 08 сентября 2011

Boundschecker: Я только что купил (& ( ^ подписка, которая дает мне право использовать проклятый продукт только на 99 дней, так что я чертовски расстроен из-за этого), но в любом случае у меня была большая память проблемы и мысли, что я должен запустить эту вещь. Кажется, что ловит много интересных вещей, но так чертовски медленно, что, ну, скажем так: мое приложение все еще находится в коде инициализации DLL, он работал по крайней мере пару часов, и до сих пор оно даже не достигло того уровня, который приложение обычно делает в первые СЕКУНДЫ ПАРЫ. Boundschecker был «дерьмом» в дни чисел, но кажется, что это действительно другая технологическая сирота, которой торгуют непредвиденным бизнес-субъектом, таким как Borland Compilers.

Так что мне действительно нравится, когда он работает, в нем много полезной информации. Мне просто нужно посмотреть, смогу ли я на самом деле получить достойные результаты. В настоящее время он использует 4+ ГБ ОЗУ и даже не запустился полностью. Поскольку я использую win7 / 64 с поврежденной домашней версией, которая распознает только 12 ГБ, у меня может не хватить памяти, прежде чем произойдет что-нибудь действительно интересное. И это будет когда-нибудь через несколько дней ...

...