Подтвердить что ты не робот

VS2013, похоже, не подходит правильно - отладчик подключен, но не настроен для отладки этого необработанного исключения

При кодировании консольного приложения я использую DLL SAP. При попытке добавить объект SAP я получаю следующую ошибку:

Отладчик подключен, но не настроен для отладки этого необработанного исключения. Чтобы отладить это исключение, отсоедините текущий отладчик.

код:

SAPbobsCOM.GeneralService oGeneralService = oCmpSrv.GetGeneralService("WEPPAGE");
SAPbobsCOM.GeneralData oGeneralData = (SAPbobsCOM.GeneralData)oGeneralService.GetDataInterface(di.GeneralServiceDataInterfaces.gsGeneralData);
oGeneralData.SetProperty("U_WebId", "1");
try
{
    oGeneralService.Add(oGeneralData);
}
catch (Exception e)
{
    Logger.WriteLog("Error Add object " + e.Message);
}

Несмотря на то, что код завершен с помощью try & catch, среда IDE падает.

enter image description here

После многих поисков и предложений в Интернете, которые не помогли, я наткнулся на этот пост и применил предложенное решение и включил собственный код отладки на вкладке "Отладка свойств проекта".

enter image description here

Результатом тикания этой опции было то, что вместо того, чтобы позволить мне отлаживать неизвестную ошибку, исключение просто "исчезло", а код работает без помех.

Вопросы

  • Почему исключение исчезает и не отлаживается?
  • Возможно ли иметь другое обходное решение для этой проблемы, поскольку включение собственной отладки кода замедляет приложение на 10x, а не является реальным решением этой проблемы.
4b9b3361

Ответ 1

Несмотря на то, что код завернут с помощью try & catch, среда IDE вызывает сбой

Нет, диалог WER показывает, что ваша программа разбилась, а не IDE. Не ваш код, OBServerDLL является компонентом SAP. И учитывая характер сбоя, использование try/catch не сможет уловить это исключение, оно встречается в рабочем потоке внутри кода SAP.

Имейте в виду, что причина сбоя очень неприятная, код исключения c0000005 является эквивалентом исключения AccessViolationException. Обычная причина этого - повреждение памяти. Никогда не поймайте подобное исключение, ваша программа не сможет продолжать работать.

Почему исключение исчезает и не отлаживается?

Это, конечно, не должно произойти, очень нездоровое. AVE, как правило, довольно случайны, повреждение памяти не гарантирует краха. Имейте в виду, что, когда это происходит во время отладки, вы все равно не можете ничего узнать о причине, у вас нет исходного кода для OBServerDLL.

включение собственной отладки кода замедляет приложение на 10x

Это маловероятно, если только собственный код не бросает исключения с очень высокой скоростью. То, что вы можете легко увидеть в окне "Вывод". Что он делает, это замедлить запуск сеанса отладки. Отладчик попытается найти PDB для всех собственных исполняемых файлов, он не найдет ничего на сервере Microsoft Symbol Server for SAP. Самый простой способ избежать этой задержки - использовать "Инструменты" > "Параметры" > "Отладка" > "Символы", отключить "Серверы Microsoft Symbols Servers".

Этот вопрос на форумах поддержки SAP будет несколько сопоставим. Также лучшее место, чтобы найти помощь с такой проблемой. Хотя, вероятно, вам нужна поддержка от инженера эскалации SAP, ему понадобится небольшой проект для репрограмм и мини-накопитель разбившегося процесса.