세분화 오류 디버깅

세분화 오류 디버깅

임베디드 Linux 장치에서 실행 중인 애플리케이션이 있고 이를 새로운 기능으로 확장하고 있습니다. 새로운 기능을 사용하려면 GLib가 필요하므로 필요한 라이브러리를 애플리케이션에 동적으로 연결합니다.

이 작업을 수행하고 기기에서 앱을 실행하면 분할 오류가 발생합니다. 새 라이브러리를 동적으로 연결할 때 이런 일이 발생합니다. GDB의 역추적은 다른 사용자 정의 동적 링크 라이브러리에서 오류가 발생했음을 보여줍니다. 불행하게도 다음 메시지와 함께 부분적인 추적만 얻습니다.

역추적 중지됨: 프레임이 저장되지 않음 PC

다른 공유 라이브러리에 대해서만 연결하고 새 코드를 추가하지 않는다는 점에 유의하세요. 사용자 정의 라이브러리를 정적으로 연결하면 충돌이 사라집니다. 나는 메모리 손상이 다른 곳에서 발생하고, 조각화가 발생하도록 사용자 정의 라이브러리를 동적으로 연결할 때 조건(예: 메모리 매핑)이 적절하다고 생각합니다.

이 문제를 추가로 디버깅하는 데 사용할 수 있는 좋은 도구와 기술을 아는 사람이 있나요?

답변1

온라인에서 비슷한 주제에 대한 토론이 있었습니다.게마네그리고루트 다이어그램포럼에서 답변을 찾을 수 있습니다.

또한 프로그램을 실행할 때 먼저 프로그램이 올바른 라이브러리를 로드하는지 확인하는 것이 좋습니다. 따라서 ldd파일을 동적으로 연결하여 실제로 올바른 버전에 대해 실행되고 있는지 확인한 다음 통과하십시오.valgrind당신이 다루어서는 안되는 기억을 다루고 있는 것이 전적으로 가능하고, 누군가가 valgrind당신에게 그것을 보여줄 수 있기 때문입니다.

관련 정보