제가 프로그램을 작성했는데요 여기서 메모리 누수가 발생하는지 cpu는 얼마나 사용하는지 화일은 현재 몇개가 열려있는지 등등의 정보를 계속 관찰하고 싶은데요
어떤 방법으로 해야 할지 모르겠네요.
여러분이 알고 있는 방법 좀 알려주세요
날씨가 모처럼 좀 화창한거 같은데요 (아닌가요 사무실에 박혀있어서^^) 좋은 하루 보내세요
저는 malloc, realloc, free에 hook을 합니다.
그래서 할당한 메모리의 블럭수 및 총 할당 크기를
최종 디버그 포인트에서 이를 확인해서
메모리 누수를 잡습니다.
그리고 실제 release할때는 hook을 제거합니다.
hook은 다소 잘못 설치하면 오히려 부작용이 있을수 있지만
명확히 hook에 대해 이해만 하고 있으면
상당히 중요한 자원(방법)인거 같습니다.
또 다른 방법으로는 가변 heap을 초기 적당히 최대 사용량을 고려해서
잡아두고 malloc, free, realloc을 재구현 하는 경우도 사용합니다.
그렇게 되면 초기 heap entry를 알고 있으므로
최종 디버깅 포인트에서 이를 scan하여 디버깅을 합니다.
가장 확실하고 명확하게 메모리 추적이 가능하다는 장점이 있는 방법이지만
구현이 어려운것이 흠이죠. 그러나 한번 library화 해서
만들어 두면 정말로 편합니다.
참고로 이때 잡아둔 local heap이 모자른 경우가 발생하기도 하는데
이것은 또다흔 local heap을 잡게 되도록 설계되고
전혀 다른 공간의 heap이 연결되도록 하고 있습니다.
저는 따로 구현한 이 방법을 glibc를 사용안하고 할때 주로 쓰는데
이유는 크기를 줄이기 위한 방법일뿐 별로 추천사항은 아니군요.
[하양] proc or top
/proc 를 뒤져 보거나 top 소스를 분석 해보시면은 많은 도움이 되실거 같군요.
<어떠한 역경에도 굴하지 않는 '하양 지훈'>
#include <com.h> <C2H5OH.h> <woman.h>
do { if (com) hacking(); if (money) drinking(); if (women) loving(); } while (1);
제가 자유강좌/팁에 올린것이 있는데저는 malloc, reallo
제가 자유강좌/팁에 올린것이 있는데
저는 malloc, realloc, free에 hook을 합니다.
그래서 할당한 메모리의 블럭수 및 총 할당 크기를
최종 디버그 포인트에서 이를 확인해서
메모리 누수를 잡습니다.
그리고 실제 release할때는 hook을 제거합니다.
hook은 다소 잘못 설치하면 오히려 부작용이 있을수 있지만
명확히 hook에 대해 이해만 하고 있으면
상당히 중요한 자원(방법)인거 같습니다.
또 다른 방법으로는 가변 heap을 초기 적당히 최대 사용량을 고려해서
잡아두고 malloc, free, realloc을 재구현 하는 경우도 사용합니다.
그렇게 되면 초기 heap entry를 알고 있으므로
최종 디버깅 포인트에서 이를 scan하여 디버깅을 합니다.
가장 확실하고 명확하게 메모리 추적이 가능하다는 장점이 있는 방법이지만
구현이 어려운것이 흠이죠. 그러나 한번 library화 해서
만들어 두면 정말로 편합니다.
참고로 이때 잡아둔 local heap이 모자른 경우가 발생하기도 하는데
이것은 또다흔 local heap을 잡게 되도록 설계되고
전혀 다른 공간의 heap이 연결되도록 하고 있습니다.
저는 따로 구현한 이 방법을 glibc를 사용안하고 할때 주로 쓰는데
이유는 크기를 줄이기 위한 방법일뿐 별로 추천사항은 아니군요.
댓글 달기