2014-09-22 2 views
0

Qt는 프로젝트 오류의 수를 제공 - 실제로 오류를 고려하지 않는 것이 내 생각 :오류 - 릴리스를 표시하지하는 방법을

몇 가지 예 :

Fontconfig error: "/etc/fonts/conf.d/65-khmer.conf", line 32: out of memory 
    // ? 
QGraphicsItem::ungrabMouse: not a mouse grabber 
    // i think happens when the mouse grab didn't quite happen, user moved too fast... 

몇 가지 다른

첫 번째는 여기에 대답 나는 소프트웨어를 통해 문제를 해결할 수 없습니다 그래서 https://askubuntu.com/questions/421891/fontconfig-error-out-of-memory

을 것 같다, 사용자는이를 수정해야합니다 ... 그것 때문에 시스템에 의존 ...

릴리스에서 빌드 된 경우에도 이러한 오류는 여전히 명령 줄에 표시됩니다 ... 응용 프로그램이 비정상적으로 동작하지 않으므로 사용자가 볼 필요가 없습니다.

이러한 오류가 표시되지 않으면 어떻게 응용 프로그램을 빌드/배포 할 수 있습니까?

가 배포 된 응용 프로그램에 오류 없을 것입니다,하지만 난

+0

오류가'stderr'에 출력된다고 가정하면 : freopen ("/ dev/null", "w", stderr);은 트릭을해야합니다. 분명히 Windows에서 null 장치를 얻으려면 다른 방법이 필요합니다. 더 많은 휴대용 방식이 http://stackoverflow.com/questions/4954140/how-to-redirect-qdebug-qwarning-qcritical-etc-output의 코드 일지 모르지만 fonconfig 오류가 다음과 함께 사용하여 인쇄되는지 여부는 알 수 없습니다. Qt 메시지 인프라 – pmr

+0

GUI 응용 프로그램이기 때문에 Windows 사용자가 이러한 오류를 볼 가능성은 거의 없습니다 ... 그러나 "freopen ("/ dev/null ","w ", stderr)을 어디에 둘 것인지 이해할 수 없습니다. " 명령? – Thalia

+0

이 오류가 인쇄 된 곳을 보지 못했습니다. qDebug 출력이 아닙니다. – Thalia

답변

1

(이 경우 스트림을 리디렉션 할 수 있습니다 ... 내가 오류의 그 유형에 대해 무엇을 할 수 있는지 모르는 이상적 물론 stderr)

freopen("/dev/null", "w", stderr); 

그냥 다른 코드를 실행하기 전에 main이를 배치하고 사용하여 사후 당신이 잘되어야합니다. Windows에서 더 많은 작업이 필요할 수 있음을 명심하십시오.

오류 메시지가 Qt 메시지 인프라 (qDebug 등)를 통해 게시 된 경우 qInstallMsgHandler 함수를 통해 새 메시지 처리기를 설정할 수 있습니다.

+0

# if-deffing하면 유닉스에서만 작동합니다 :-) – Thalia

+0

@ 탈리아 '#if! defined (NDEBUG)'도 잊지 마라. 당신은 여전히 ​​디버그 빌드에서 출력을 얻는다. – pmr

+0

아 pro file-unix에 정의를 추가했습니다 : CONFIG (릴리스) : DEFINES + = NO_RELEASE_ERRORS ... NODEBUG를 사용하면 더 좋을 수도 있습니까? – Thalia