2009-09-02 2 views
0

я только что приземлился на SunOS:Приложение C++ для SunOS имеет утечку памяти. Как его найти?

$ uname -a 
SunOS sunfi95 5.9 Generic_122300-13 sun4u sparc SUNW,Sun-Fire-880 

и имеют Sun Studio:

$ CC -V 
CC: Sun C++ 5.8 2005/10/13 

Как я могу найти memleaks в коде? (dbx в данном случае не является вариантом). Valgrind не работает на системах sparc, только одно решение, которое перешло мне в голову, - это использование некоторой интеллектуальной библиотеки, которая будет перегружать новые и удалять и подсчитывать, сколько раз они вызываются. Кто-нибудь знает что-то такое на BSD, как лицензия?

+1

Почему бы не dbx? Вы можете использовать dbx, отладчик Sun Studio, функцию проверки времени выполнения (RTC). (dbx) check-leak (dbx) args. – Abhay

+0

, потому что нам нужно найти утечку в dll и не иметь фреймворка с отладочными символами. В любом случае, я не уверен, что, даже если бы у нас это было, dbx может справиться с этим? – teZeriusz

ответ

4

В Sun OS вы можете использовать Purify или попытаться установить порт (как правило, вы также пропустите утечку) вашей программы в Unix/Linux и используйте valgrind, чтобы найти утечку.

+5

SunOS _is_ UNIX, возможно, второй по популярности вариант после Mac OSX – MSalters

+0

Я слышал, что Purify - отличный инструмент, к сожалению лицензия назначается другим подразделениям. – teZeriusz

1

Я думаю, что есть бесплатные библиотеки, но мы используем Purify on Solaris, который хорошо работает.

2

DTrace может быть очень полезен для разработки того, что происходит в приложениях Solaris.

Here's an example of how to use it from Sun.

+0

Я не понимал, что dtrace может использоваться для поиска memleaks. Я думал об этом как о чем-то подобном инструменту codecoverage, но немного низком уровне и во время выполнения. Кстати, нет ли перегрузки во время процесса dtracing? Мы играем с протоколами, и для нас важно время. – teZeriusz

+0

DTrace практически не имеет накладных расходов, когда он отключен, но при включении он оказывает влияние на производительность. Однако, поскольку цель проекта - диагностировать проблемы на производственных системах, это довольно мало. Лучший совет - попробовать и посмотреть, в идеале, на dev install. –

1

Вы также можете использовать приложение под названием cppcheck для поиска утечек памяти, а также ряд других проблем. Это бесплатный/с открытым исходным кодом.

Я никогда не использовал его на машинах SunOS или Sparc, но источник доступен, и вы можете попытаться его построить. Я не уверен, что происходит под капотом, но я не понимаю, почему вы не смогли построить его на машине SunOS Sparc.