어떤 프로세스가 어떤 메모리 주소에 쓰는가? [폐쇄]

어떤 프로세스가 어떤 메모리 주소에 쓰는가? [폐쇄]

최근에 저는 직장(Ubuntu 14.04의 C++ 애플리케이션)에서 다양한 메모리 관련 충돌을 목격했습니다. 우리 애플리케이션은 독점적인 타사 라이브러리를 사용하여 실시간 데이터와 상호 작용하며 고도로 멀티스레드됩니다. 다양한 경우에 glibc는 "이중 해제 또는 손상" 및 "손상된 이중 연결 목록 감지"와 같은 오류를 뱉어냅니다. 이로부터 복구된 코어는 타사 코드(자주 발생)와 자체 코드(자주 발생하지 않음) 모두에서 충돌이 발생하는 것을 보여줍니다. 통합 기능은 각 충돌이 new/ malloc또는 delete/ 에 해당한다는 것입니다 free.

불행하게도 이 환경에서는 디버거를 위한 공간이 거의 없습니다. 이러한 애플리케이션은 속도에 매우 민감하며, 환경의 모든 것이 실시간이기 때문에 충돌을 재현하려고 할 때만 입력 데이터와 운영 환경을 대략적으로 추정할 수 있습니다.

즉, 내 질문은 다음과 같습니다. 어떤 프로세스의 어떤 부분이 메모리에 닿지 않아야 하는지 정확하게 말할 수 있는 유틸리티는 무엇입니까? 충돌은 안정적으로 재현될 수 없기 때문에 프로그래밍 방식으로 유일한 옵션은 데이터를 캡처한 다음 충돌이 발생한 후 검사하는 것입니다. 이를 위해 나는 찾았다오 프로필그리고시스템 교수, 하지만 이 두 도구가 작업에 적합한지 잘 모르겠습니다.

질문이 모호한 점에 대해 사과드리며, 이 문제에 대한 안내를 미리 감사드립니다.

관련 정보