2009-11-20 3 views
2

사용자에게 실패한 어설 션을 보여줄 필요가있는 새 매크로를 정의하고 개발자가 문제를 디버깅하기에 충분한 정보 만 있으면 좋습니다. 사용자가C++ 응용 프로그램 용 SMART ASSERT?

#define ASSERT(f) \ 
    do \ 
    { \ 
    if (!(f) && AfxAssertFailedLine(THIS_FILE, __LINE__)) \ 
     AfxDebugBreak(); \ 
    } while (0) \ 

샘플 메시지는 우리가 사용하는 것이 fn을 개발자 지난 정보에이 메시지와 함께 무엇을해야하는지 사용자에 대한

메시지,

MessageBox(_T("Error in finding file."),_T("TITLE"),MB_ICONERROR); 
+0

Afx 또는 MFC를 사용하지 말 것을 권장합니다. Win32 및 내장 함수를 사용하여 이러한 모든 작업을 수행 할 수 있습니다. –

답변

3

있다 최종 사용자 입장에서 고려해야 할 몇 가지.

  • 누구를 대상으로합니까? 할머니가이 프로그램을 사용하고 있다면,이 단언 메시지 박스는 그녀를 초조하게 할 수 있을까요?
  • 이러한 어설 션은 얼마나 자주 실패합니까? 정상적인 사용으로 1 주일에 한 번 주장하면 프로그램에 그대로 유지하는 것이 정당 할 것입니다. 그러나 한 시간 정도면 사용자를 짜증나게 할 것입니다. 중간계는 계측하기가 분명히 어렵습니다.
  • "사용 어설 션"환경 설정을 프로그램에 적용한 적이 있습니까? 그런 식으로 기술적 인면에서 도움이되는 사용자가 있으면 명시 적으로 주장을 활성화하고 일이 잘못 될 때이를 알려줄 수 있습니다. 일부 사용자가 어설 션이 무엇인지 또는 프로그램에서 팝업을 얻는 이유를 모르면 어설 션을 비활성화하고 프로그램을 계속 행복하게 사용할 수 있습니다. 바라건대, 팝업창에 "어설 션 오류 메시지를 더 이상 표시하지 않음"체크 상자를 넣을 수 있습니다.

나는 는 일반 나쁜 생각 일 것이다 사용자에 주장 팝업을 강제 있지만 좋은 방법이 될 것입니다 활성화 또는 경고를 해제 할 수 있음을 말하고 싶지만.

4

메시지 상자에는 개발자 정보가 표시되어서는 안됩니다. 개발자 정보는 일부 로그 파일에 저장해야하며 사용자는 전송 파일을 개발자에게 요청해야합니다.

추신 : 귀하의 질문은 매우 짧습니다.

0

모든 프로그래머가 아니라면 내부 사용자를 노출시키지 말고 대신 로그 파일을 사용하고 해당 로그를 devs에 보내는 (자동) 제안과 함께 팝업하십시오.

1

이 질문을 한 직후 Andrei Alexandrescu와 John Torjo가 언급 한 Enhancing Assertions에 대해 읽었습니다. 저에게 맞는 후보자 인 것처럼 보입니다. 그러나이 기사의 출처에 대한 링크는 깨졌으며, 누군가 내게 줄 수 있습니까? SMART_ASSERT에 대한 소스 코드?

+1

SMART_ASSERT는 실제로 매우 유용합니다.파일 및 어설 션 실패 행을 표시 할뿐만 아니라 관련된 변수의 내용을 표시하고 세션이 끝날 때까지 어설 션을 무시할 수있는 기능을 제공합니다. 출처는 여기에서 확인할 수 있습니다. http://torjo.com/code/smart_assert.zip – Thomas

+1

ftp://ftp.drdobbs.com/sourcecode/cuj/2003/cujaug2003.zip –

0

사용자에게 실제 디버그 정보가 표시되는 것을 허용하지 않을 것입니다. 응용 프로그램이 정말 멋지게 보이기 때문입니다.

둘째, 일반 {} 범위 대신 do-while 루프를 사용하는 이유는 무엇입니까?

+0

예, 개발자가되기 때문에 필요합니다. ASSERT 문 다음에 세미콜론을 추가합니다. – yesraaj