
메모리 관련 문제를 추적하는 동안 어떤 전략을 사용합니까? 메모리 누수, 메모리 손상 등을 식별하기 위해 어떤 도구(오픈 소스 및 독점 도구)를 사용합니까? 시스템에서 gdb/dbx만 사용할 수 있는 경우 메모리 누수를 어떻게 추적합니까?
나에게는 디버거만으로 메모리 누수를 수정하는 것이 매우 어렵습니다.
답변1
답변2
valgrind는 놀라울 정도로 도움이 됩니다.
답변3
대산괴(valgrind에서)는 메모리 누수를 찾는 가장 좋은 방법 중 하나입니다. 의심스러운 코드를 반복하거나(또는 충분히 오랫동안 프로그램을 실행하고) ms_print로 결과를 덤프합니다. 일반적으로 호출 스택은 문제를 해결하는 데 충분한 정보를 제공합니다.
GDB를 사용하면 실행 중인 프로그램에 연결하고 다음과 같은 함수를 호출할 수 있습니다.malloc_stats()
프로그램이 다른 언어로 작성된 경우에는 더 까다로울 수 있습니다. 최근 일부 GDB는 스크립트 기능을 얻었고 사람들은 다음과 같은 흥미로운 프로젝트를 시작했습니다.gdb-힙, 코어 덤프에서 Python 메모리를 분석할 수 있습니다. C++ 객체에 대해서도 유사한 메모리 분석 스크립트가 가능할 수 있습니다.
또한 읽어보세요https://stackoverflow.com/questions/2564752/examining-cc-heap-memory-statistics-in-gdb
답변4
나는 한동안 Objective-C를 사용해 왔고 C 레벨 메모리 관리 등을 다루는 분석기가 있습니다.Clang 정적 분석기너무 좋아서 Apple은 xCode IDE와 함께 번들로 제공하기로 결정했습니다. 이것이 귀하의 질문에 적합한지 확실하지 않지만 C를 수행하고 있다면 시도해 볼 가치가 있습니다.