2009-09-02 6 views
0

난 그냥 SunOS의에 착륙 :SunOS의 C++ 앱에 메모리 누수가 있습니다. 그것을 찾는 방법?

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

것은 내가 코드에서 memleaks을 찾을 수있는 방법 :

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

와 썬 스튜디오가? (dbx는이 경우 옵션이 아님). Valgrind는 sparc 시스템에서 작동하지 않습니다. 내 마음을 가로막는 유일한 해결책은 새 라이브러리를 오버로드하여 삭제하고 몇 번 호출하는지 계산하는 스마트 라이브러리를 사용하는 것입니다. 누구나 BSD 라이센스와 같은 것을 알고 있습니까?

+1

왜 dbx가 아닌가요? Sun Studio 디버거 인 dbx는 런타임 검사 (RTC) 기능을 사용할 수 있습니다. (dbx) 체크 - 누출 (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를 사용합니다.

2

DTrace는 Solaris 응용 프로그램에서 진행중인 작업을 처리하는 데 매우 유용합니다.

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

+0

dtrace를 사용하여 memleak을 찾을 수 있다는 것을 알지 못했습니다. 나는 이것을 코덱 도구와 비슷하지만 조금 낮은 레벨과 런타임으로 생각했습니다. BTW는 dtracing 프로세스 중에 과부하가 없습니다? 우리는 프로토콜을 가지고 놀고 있으며 시간은 우리에게 중요합니다. – teZeriusz

+0

DTrace는 비활성화 될 때 거의 오버 헤드가 없지만 사용 가능하게 설정하면 성능에 영향을 미칩니다. 그러나 설계 목표는 생산 시스템의 문제를 진단하는 것이므로 매우 간단합니다. 최고의 충고는 그것을 시험해보고, 이상적으로는 dev에 설치하는 것이다. –

1

또한 메모리 누수를 찾을 cppcheck라는 응용 프로그램뿐만 아니라 다른 문제의 번호를 사용할 수 있습니다. 무료/오픈 소스 제품입니다.

나는 SunOS 나 Sparc 컴퓨터에서는 사용하지 않았지만 소스를 사용할 수 있으며 빌드하려고 시도 할 수 있습니다. 후드에서 무슨 일이 일어날지는 모르지만, 왜 당신이 SunOS Sparc 머신에서 만들 수 없었는지 모르겠습니다.