문제

하나는 제품의 개발은 전화 응용 프로그램를 위한 노키아 휴대 전화에서 수행 C++및 심 비안,우리가 받기 시작했"무작위"충돌하는 동안 전에 사용자 44 황.

나는 새로운 symbian 환경므로 내가 찾는 도구와 권장 사항을 찾는 데 도움이하의 뿌리이다.

거기에 해당하는"스택 추적이"나는 할 수 있습니까?가 일반적인 공황을 끄는 코드는 쉽게 확인할 수 있게 되었습니다 어떤 통찰력으로 그것은?

도움이 되었습니까?

해결책

에서 http://www.symbian.com/developer/techlib/v9.1docs/doc_source/reference/n10352/userpanics.html:

This panic is raised by the Free() and FreeZ() member functions of an RHeap.
It is caused when the cell being freed overlaps the next cell on the free
list (i.e. the first cell on the free list with an address higher than the
one being freed).

즉, 호출 삭제/delete [] (결과적으로 유효하지 않은 포인터로 free ()/freez ()를 호출합니다. Carbide에서 디버깅을 할 때 디버처는 공황을 일으키는 라인에서 파손되어야하며 잘못된 삭제를 볼 수 있어야합니다.

다른 팁

Kasprzol 지적, 스을 통해 디버거야 당신은 좁은 아래 설정의 선이나 일상적인 일으키는 공포.수도 있습하고 싶지 않았는지 확인하십시오를 삭제하려고 하는 힙 개체 누구의 소유권이 양도되는 또 다른 객체를 힙(아마 방법을 통해 호출하지 않는 명확하게 문서로 이 사실을)이미 삭제되는 개체기 전에 당신은 그것을 삭제하는 명시적으로 합니다.나에게 물린 후기 전에.

저의 모호한 이해는 사용자 44와 사용자 45 패닉이 모두 힙 문제와 관련이 있다는 것입니다. 가장 일반적인 문제는 이중 삭제입니다. 포인터를 삭제 한 후 당신의 포인터를 무효화하고 있습니까? NULL을 삭제하기 전에 확인하고 있습니까? 어디에서 더블 삭제할 수 있습니까?

디버깅을위한 가장 쉬운 선택은 아마도 카바이드 2.0을 사용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top