Ошибка отладочного утверждения: исключение C ++ в приложении C #?

0

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

За последние несколько месяцев он стабильно работает, но потом произошло исключение, которое мне кажется странным. Так как это происходит только на сервере (это серверное приложение.) В режиме деблокирования.

Приложение написано на С#, управляется в Visual Studio 2012 Professional и выпущено, чтобы быть явно 32-разрядным.NET 3.5, поскольку сервер, к сожалению, работает под управлением Windows 2003. (Я пытался убедить их обновить, чтобы обновить приложение к.NET 4.5, но, увы.)

Поэтому я получаю сообщение об ошибке C++ Debug. См. Снимок экрана ниже. Это происходит в файле с именем vsprintf.c Я угадываю строку 91. Единственное сообщение, которое дает мне подсказку, это формат! = NULL.

Это меня смущает. Что может быть причиной этого? Какие шаги я могу предпринять для отладки в такой ситуации? Что такое "vsprintf.c"?

Изображение 174551

Изменение: мне удалось найти что-то в eventviewer. Я продолжу исследовать это тем временем.

Изображение 174551

С уважением,

меня.

  • 0
    vsprintf - это стандартная функция. Вам необходимо проверить стек вызовов.
  • 0
    Спасибо за ваш быстрый ответ, но я не смог воспроизвести это на компьютере разработчика. Также администратор сервера перезапустил приложение, прежде чем я смог посмотреть сам.
Показать ещё 1 комментарий
Теги:
printf
release

2 ответа

2
Лучший ответ

Это ошибка утверждения, т.е. Предположение о том, что выполняемая вами функция не выполняется, в этом случае указатель не равен нулю. По внешнему виду, это строка формата. Вы используете строки формата напрямую? Если да, посмотрите там. Если нет, это, вероятно, проблема с утечкой памяти, за которой следует неправильная работа с памятью.

  • 0
    Я исключил утечку памяти, посмотрев на графику использования памяти в VM Manager
  • 0
    [+1] за отличное предположение! @DavideNguyen: тогда вы сможете воспроизвести это на своей машине разработки - если вы производите достаточно нагрузки?
Показать ещё 3 комментария
0

вызовы vsprintf могут быть вызваны sprintf и другими производными, возможно, вы должны проверить все эти вызовы. (Это также могут быть методы строковых классов, как я видел в VCL).

Если ошибка не вызвана одной из используемых вами библиотек, то в параметре строки формата должен быть NULL (или 0), который в основном является последним до ... в прототипе.

Если вы знакомы с регулярными выражениями, это может сильно помочь при поиске шаблонов.

  • 0
    Я пересматриваю код, но сомневаюсь, что найду что-нибудь, что покажется мне странным.
  • 0
    @DavideNguyen Нашли ли вы какие-либо прямые вызовы функций с sprintf в его именах?
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню