2010-05-11 5 views
2

MinGW 도구 체인을 사용하여 Windows XP 용 응용 프로그램을 작성 중이며 예기치 않게 충돌하는 경우가 있습니다. 그래서, 나는 디버거 (Gdb)를 사용하려고하지만, 프로그램은 코드 03으로 끝나기 전에 아무 일도 일어나지 않습니다. 사실, 내가 GDB에서 볼 모두는 다음과 같습니다문제가 발생하기 전에 프로그램이 디버거에서 충돌합니다.

[새로운 스레드 3184.0x7b8]

프로그램 코드로 종료
[ 3184.0xef8는 새로운 스레드] 03.

내 의혹이다 종속성 (Qt, VTK 및 ITK, 모두 MinGW로 빌드 됨)의 일부 동적 연결이 끊어졌습니다. 그러나, 그냥 정상적으로 프로그램을 실행할 때 이것은 발생하지 않습니다. 또는 프로그램이 시작되고 실행 된 후 일시적으로 발생하는 것으로 보입니다. 참고 : 크로스 컴파일에도 Cmake를 사용하고 있습니다.

어떻게해야합니까? 무엇을 시도 할 수 있습니까?

답변

2

signal(SIGABRT, <callback>)을 통해 콜백을 추가하여 프로세스를 종료하기 전에 중단 할 호출을 잡으십시오. main()을 치기 전에 이런 일이 발생하면 정적 전역 및 컴파일러가이를 잡으려고 할 수도 있습니다.

+0

아, 좋은 생각입니다. 감사. – Tim

+0

예. 어설 션 매크로가 에 정의 된 매크로로 리 라우팅 된 경우이를 알아 내야했습니다. 그것은 굉장. – MSN

+0

멋진 것들, 멋진 아이디어를 위해 @MSN, 나는 그 자신을 시험해 볼 필요가있다. :) – mingos

0

코드 3은 일반적으로 segfault에 반환됩니다. Linux로 전환하고 전기 울타리로 프로그램을 디버깅 해보십시오. 그것은 당신에게 약간의 통찰력을 줄 것입니다.

+0

조언을 주셔서 감사합니다. 그러나 충돌은 Windows 어디서나 발생하지 않습니다. – Tim

관련 문제