C/C++ 프로그램의 메모리 관리에 도움이되는 도구 (Linux 용)를 구현해야합니다. 주요 목적은 메모리 누출을 추적하는 것이지만, 다른 것들 중에서 memcpy에 대한 중복 된 인수를 검사하기도합니다.C 메모리 오류를 추적하고 무시 된 malloc 등이 호출 된 곳을 찾는 도구 구현
실제로 (예를 들어 다른 라이브러리의) 이러한 함수에 대한 모든 호출을 가로 채기 위해 내 버전이 필요하므로 실제로 오버라이드해야합니다. 그래서 모든 게시물에서 제안 된 #define 트릭을 사용할 수 없습니다. 내 질문은 원래 소스 파일 이름, 전화가 만들어진 함수 및 줄 번호를 어떻게 찾을 지입니다.
내 유일한 아이디어는 디버깅 정보로 프로그램을 컴파일하고 오브젝트 파일 (ELF는 리눅스를 사용함에 따라)을 파고 들기입니다. 필자는 객체 파일을 사용한 적이 없으며 어셈블리 언어의 기초 만 알고 있으므로 꽤 힘든 작업입니다.
더 쉬운 방법이 있나요? 어떤 비슷한 일을 해본 사람이라면 누구나 내가 시작하도록 도울 수있다. :)?.
는
그래서 [valgrind] (http://valgrind.org/)와 같은 것을 쓰고 싶습니까? 오픈 소스이기 때문에 그들이 어떻게했는지 확인할 수 있습니다. 아니면 그냥 사용하십시오. –
왜 [Valgrind] (http://valgrind.org/)를 사용하지 않는지 물어볼 수 있습니까? 이것이 대학 과제 또는 이와 유사한 것이 아니라면, 왜 이미 완료되고 시험되고 테스트 된 것을 구현해야하는지 알지 못합니다. – darioo
예 대학 과제입니다 ^^. 하지만 고맙습니다. 저는 Valgrinds의 출처를 확인하고 제가 얼마나 멀리 갈 수 있는지 보도록하겠습니다. :) 누구든지 더 유용한 포인터가 있다면 나는 아직도 당신의 도움을 주셔서 감사합니다. 감사합니다. – SpotsWood