2012-07-19 3 views
1

저는 C++ Software Image 프로세싱 툴을 작성하고 있습니다.이 툴은 정상적으로 작동하지만 갑자기 멈추고 아무런 예외 나 충돌을 보내지 않거나 어떤 라인이나 어떤 영역에서 충돌이 발생하는지 알려주지 않습니다 .크래시 분석

어떻게 그 상황에서 잘못된 코드를 확인할 수 있습니까?

답변

1

이 당신이 할 수있는 몇 가지이다 : 모든

우선하지만, 더 무한 루프, 교착 상태 같은 소리, 또는 당신이 당신의 모든 시스템 자원을 사용하고 좋아하고 그냥 느려지고 있어요 매우 (아마도 무한한) 오랜 시간이 걸립니다. 그렇다면 디버깅으로 찾아야합니다. 사용중인 공유 변수에 대한

  1. 봐 : 반드시 순서 - 당신이 시도 할 수


    것. 스레드 및 뮤텍스가있는 교착 상태가 있습니까? 그것에 대해 생각하고 고쳐 그것을 시도하십시오.

  2. 초기화되지 않은 변수/포인터의 사용을 확인하십시오. 때로는 (거의) 당신이 정의하지 않은 동작을 호출 할 때 매우 이상한 동작을 얻을 수 있습니다 - 저는 Windows C++ dev (Linux에서 작동합니다)가 아니지만 은 세그먼트 화에서 락업을 처음봤을 것입니다 결점.

  3. 처리 출력에 오류 출력 (std :: cerr/stderror)을 추가하므로 에서 오류가 얼마나 멀리 있는지 확인할 수 있습니다. 그런 다음 조건을 설정하여 해당 지점을 잡아서 디버거에서 발생하는 것을 볼 수 있고 변수 상태 및 무엇이 일지 잘못 표시 될 수 있습니다.

  4. 최근에 어떤 전화가 가장 많이 수신되었는지 확인할 수 있도록 스택 추적을 수행하십시오. 최근에 이것은 적어도 실행 된 마지막 기능 체인 을 알려줍니다.

0

이전에 스택 추적을 사용 했습니까?

사용 방법은 MSDN 설명서를 참조하십시오. 응용 프로그램에 따라 스택 추적 유형이 다릅니다.

0

당신은

  1. 그것이로

시작을 작업을 시작할 때까지

  • 이 프로그램에서 프로그램 코드의
  • 컷 섹션을 로깅 코드를 추가 디버거를 사용할 수 있습니다 먼저.