#c #service #windows-xp
#c #Обслуживание #windows-xp
Вопрос:
У меня есть c NTservice, к которому модули SAP обращаются через вызовы rfc. Теперь эта служба останавливается с сообщением о том, что «это приложение запросило среду выполнения завершить его необычным способом», а затем показывает некоторую ошибку IE script, которая указывает на URL «res://C:WINDOWSSystem32mmcndmgr.dll/views.htm » — Я получаю эту ошибку очень редко и неожиданно.
Я понятия не имею, почему возникает эта ошибка, пожалуйста, кто-нибудь может рассказать мне о деталях и о том, как ее исправить, если это возможно
(Windows xp, служба создана в MSVC 2005)
Спасибо, Анил
Ответ №1:
Это сообщение об ошибке (по крайней мере, обычно) означает, что у вас возникло неперехваченное исключение. Вы могли бы начать с добавления try
/ catch(std::exception const amp;e)
/ catch(...)
в свой ServiceMain в попытке перехватить исключение и, если оно является производным от std::exception
, распечатать его what()
, чтобы посмотреть, что оно может сказать само по себе…
Комментарии:
1. Или ошибка сегментации. Или FPE. Или любое количество вещей!
2. Хотя это могут быть и другие причины, это достаточно частое неперехваченное исключение, которое обычно является тем, что вы хотите попробовать в первую очередь. Когда / если это не удается, 1) код обработки исключений по-прежнему полезен, и 2) вам придется заняться более сложными вещами…
3. Ваша практическая логика верна. Тем не менее, я хотел бы посмотреть статистику. 🙂
Ответ №2:
Это очень бесполезное сообщение, которое отображается при сбое вашего исполняемого файла. Почти все может быть неправильно.
Запустите исполняемый файл через отладчик и дождитесь возникновения проблемы. Затем вы можете попытаться узнать больше информации об этом.
В частности, я бы проверил документацию службы и убедился, что ваши модули SAP правильно используют вызовы RFC.
Комментарии:
1. Этого должно быть достаточно для регистрации отладчика post mortem (windbg / I). Запуск службы в отладчике может быть довольно сложной задачей.
2. @mkaes: Вам не обязательно запускать его как службу. Тем не менее, хорошая идея.