메모리 관련 문제를 추적할 때 어떤 전략을 사용합니까? 메모리 누수, 메모리 손상 등을 식별하기 위해 어떤 도구(오픈 소스 및 독점)를 사용합니까? 시스템에서 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를 사용하고 있다면 시도해 볼 가치가 있습니다.