2011-04-06 1 views
0

rfc 호출을 통해 SAP 모듈이 액세스하는 C++ NTservice가 있습니다. 이제이 서비스는 "이 응용 프로그램이 런타임에 비정상적인 방법으로 종료하도록 요청했습니다"라는 메시지와 함께 멈추고 "res : // C : \ WINDOWS \ System32 \ mmcndmgr.dll"을 가리키는 IE 스크립트 오류를 ​​보여줍니다. /views.htm "-이 오류는 매우 드물게 예기치 않게 발생합니다.C++ 서비스가 "이 응용 프로그램이 런타임에 비정상적인 방법으로 종료하도록 요청했습니다"라는 오류 메시지가 표시됩니다.

나는이 오류가 나오는 이유 단서가 없다, 사람이 세부 사항에 대해 저를 안내 할 수

감사 (윈도우 XP, 서비스가 MSVC 2005 년에 만든) 가능하다면 방법을 수정하시기 바랍니다, Anil

답변

0

그 오류 메시지 (적어도 일반적으로)는 캐치되지 않은 예외가 있음을 의미합니다. 당신은 예외를 잡기위한 시도로, 당신의 ServiceMain에 try/catch(std::exception const &e)/catch(...)을 추가하여 시작하고 그것의 what()은 그 자체에 대한 말을하는 것을보고 밖으로 인쇄 std::exception의 유도체 인 경우 ... 수

+0

또는 세그멘테이션 오류입니다. 또는 FPE. 또는 여러 가지! –

+0

다른 것들이있을 수 있지만, 보통 당신이 먼저 시도하고 싶은 것이 잡히지 않는 예외입니다. /가 실패 할 때 1) 예외 처리 코드는 여전히 거기에있는 것이 좋으며 2) 더 어려운 일을해야합니다. –

+0

실용적인 논리가 적절합니다. 그래도 통계를보고 싶습니다. :) –

0

실행 파일이 손상되었을 때 표시되는 매우 도움이되지 않는 메시지입니다. 거의 모든 것이 잘못 될 수 있습니다.

디버거를 통해 실행 파일을 실행하고 문제가 발생할 때까지 기다리십시오. 그런 다음 더 많은 정보를 찾을 수 있습니다.

특히 서비스 설명서를 확인하고 SAP 모듈이 RFC 호출을 올바르게 사용하는지 확인합니다.

+0

사후 사후 디버거 (windbg/I)를 등록하기에 충분해야합니다. 디버거에서 서비스를 실행하는 것은 꽤 문제가 될 수 있습니다. – mkaes

+0

@mkaes : 서비스로 실행하지 않아도됩니다. 그래도 좋은 생각이야. –

관련 문제