한컴 리눅스, memory leak 체크....에 대해..
글쓴이: sore / 작성시간: 화, 2003/10/07 - 4:12오후
갑작스레 리눅스 환경에서 프로그래밍을 하려니 힘드네요. ㅠ.ㅠ
1. 현재 한컴리눅스를 쓰고 있습니다.
그런데, 컴파일을 3.0에서 하면 실행파일 용량이 2M정도가 나오는데 3.1 에서 컴파일을 하면 3M가 넘어갑니다.
Xlib 를 사용했습니다.
소스는 건드린 곳 없이 그냥 컴파일을 했었는데.. 그럴 수도 있습니까?
어떤 이유라도...
2. 메모리 누수가 생기는지를 알고싶은데..
VC++에서는 실행이 끝나면 output 창에 메모리 릭이 나는지 안나는지 나타나고, 바운드 체커같은 프로그램으로 어디서 메모리 누수가 생기는지를 알 수 있는데..
리눅스에서는 그런 것들을 어떻게 알 수 있는지요?
찾아봤는데.. memprof 라는 것이 있더군요. 그런데 이건 gnome에서만 사용할 수 있다고 하는데. 한컴 리눅스는 KDE 를 쓰더군요..
gnome을 깔아서 써야 하나요, 아니면 다른 방법이... ?
3. gdb를 이용하면 그냥 실행할때보다 더 안정적으로? 잘 돌아가던데. (보통때는 segmentation fault가 자주 생기기 땜시.. ) 그 이유는 뭔지....
gdb 는 오류 찾기에 적당하지 않은 것이라면 어떻게 하면 segmentation fault가 생기는 이유를 찾아낼 수 있는 건지...
답변 부탁드립니다....
Forums:
Re: 한컴 리눅스, memory leak 체크....에 대해..
책을 먼저 하나 사서 보세요. wrox 에서 나온 Beginning Linux Programming 이라는 책이 쓸만합니다. 책 제목에서 풍기는 인상하고는 조금 달리, 다른 플랫폼(윈도 포함)에서 주로 프로그래밍하시던 분들이 리눅스 세계로 건너와 개발하는데 필요한 것들을 상세하게 잘 다루고 있습니다.
한컴리눅스는 안 써봐서 잘은 모르지만, 프로그램 한 두개 바뀐 것도 아니고 배포판 자체가 바뀌면 컴파일 잘 되던게 안된다거나 거꾸로라고 해도 저라면 하나도 놀라지 않겠습니다. 그냥 쉽게, 배포판이 다르면 서로 다른 OS이고, 배포판 버전이 조금 바뀌면 다른 OS에서 메이저 업그레이드된 것 정도 차이가 있다고 생각하시면 비슷합니다. 앞으로는 좀 나아질지 모르지만 어쨌건 아직까진 그렇습니다. 소위 '국산' 배포판들은 버전이나 릴리스 관리가 상대적으로 조금 더 허술한 측면도 있구요.
Electric Fence 를 한번 써보세요.
http://freshmeat.net/projects/efence/
gdb를 이용해서 실행하면 해당 프로그램 수행 과정을 쫓아가기 위해 gdb가 그 프로그램을 child process로 만들어서 돌리게 됩니다. 따라서 메모리 관련해서는 여러가지 다양한 변화가 생길 가능성이 크죠. gdb로 찾기 힘든 segfault 라면 소위 '내공'으로 때우는 방법 밖에 없을 듯 합니다. :-)
일단은 gdb에 올리지 말고 segfault 날 때 까지 돌리고, 만들어진 core 파일을 gdb로 분석해보는게 정석이라고 봅니다. (gdb 사용법도 위에 언급한 책에 '급하게 써야할 때 꼭 알아야 하는' 수준으로 잘 정리돼 있습니다.)
The good is the enemy of the best.
Linux의 GNUC Library에는 간단한 memory heap ch
Linux의 GNUC Library에는 간단한 memory heap checker 기능이 들어 있습니다.
환경변수 MALLOC_CHECK_ 에 값을 1, 2로 넣어 주시면 되지요.
$ export MALLOC_CHECK_
$ MALLOC_CHECK=2
이렇게 하신뒤에
기능은 프로그램을 실행하면, leak은 찾을수 없지만, 잘못된 메모리를 해제하는 것은 찾을수 있습니다.
쓰고보니 원하는 기능이 아닐수도 있겠군요.
---
http://coolengineer.com
댓글 달기