Monday, May 29th, 2006 02:24 pm
Люди добрые, скажите - а существует аналог valgrind под win32? Т.е. чтобы умел ловить memory leaks и memory corruption, причем без изменения кода программы? Я тут попытался поработать с insure++, но пока от него кроме unhandled exception ничего не добился, а суппорт их на вопрос "как запускать без instrumentation?" отвечает "мы, конечно, могли бы попробовать, но давай мы тебе лучше обьясним, как перекомпилировать твой код с instrumentation". А это не совсем то, что надо...
Monday, May 29th, 2006 11:30 am (UTC)
А Bounds Checker еще жив? Когда-то был такой, работал и с инструментацией кода и без.
Monday, May 29th, 2006 11:37 am (UTC)
rational purify
Monday, May 29th, 2006 11:59 am (UTC)
По-моему ни purify ни bounds checker не умеют без instrumentaion
Monday, May 29th, 2006 12:04 pm (UTC)
хотя нет. на счёт purify я ошибся
Monday, May 29th, 2006 04:18 pm (UTC)
Вобщем, да, по моему опыту, шанс что BC или Purify отловят что-то _сложное_ и с инструментацией не очень велик; без нее он падает еще на порядок. По крайней мере, за последние несколько лет все попытки изловить что-то кокретное с помощью BC обычно кончались тем, что находилось что-то другое, однако совсем не то, что искалось :-) Rollbacks, diffs & code reduction...
Если много exceptions, до запуска попробуй убрать отладку всех неинтересуюших тебя модулей; если не помогает, то можно попробовать закомментировать как можно больше нерелевантного/стабильного кода. Такая петрушка не только с Insure++ - у нас иногда день уходит, что бы продукт с BC завести, ничего не поделаешь.
Monday, May 29th, 2006 09:04 pm (UTC)
насколько я помню, инструментирует at link time. может быть, умеет и at load time, не уверен.
Monday, May 29th, 2006 01:00 pm (UTC)
В руководстве "Debugging Tools for Windows" (http://www.microsoft.com/whdc/DevTools/Debugging) сказано, что memory leaks они ищут, но насколько это удобно, я не знаю.
Tuesday, May 30th, 2006 08:45 am (UTC)
Под юниксами есть libefence. Как раз для этого. Есть ли под винды - не знаю. Не инструментирует, надо линковать с соответствующей библиотекой. Очень хорошо ловит выходы за границы массива.
Tuesday, May 30th, 2006 09:50 am (UTC)
а ещё лучше кушает память, посему годится только для отладки небольших программ.
Monday, May 29th, 2006 01:01 pm (UTC)
Простите за глупый вопрос: отладочная сишная библиотека сама ведь отслеживает кучу, так? Если так, то почему бы не собрать отладочную версию?
Monday, May 29th, 2006 04:43 pm (UTC)
Purify.
Monday, May 29th, 2006 10:07 pm (UTC)
AQTime
Tuesday, May 30th, 2006 08:05 am (UTC)
Есть MemoryValidator, есть GlowCode. Последним я пользовался именно для этих целей, вполне успешно, хотя программа, слинкованная одновременно с несколькими версиями рантайма (don't ask) его малость сводит с ума. Первый вроде как тоже умеет, но не дружит со статически линкованной MFC (может, теперь уже дружит?).