Я управляю и обновляю конкретное приложение. Он старый, и я не являюсь оригинальным разработчиком. Он страдал несколькими сеансами отладки на протяжении многих лет среди других небольших патчей.
За последние несколько месяцев он стабильно работает, но потом произошло исключение, которое мне кажется странным. Так как это происходит только на сервере (это серверное приложение.) В режиме деблокирования.
Приложение написано на С#, управляется в Visual Studio 2012 Professional и выпущено, чтобы быть явно 32-разрядным.NET 3.5, поскольку сервер, к сожалению, работает под управлением Windows 2003. (Я пытался убедить их обновить, чтобы обновить приложение к.NET 4.5, но, увы.)
Поэтому я получаю сообщение об ошибке C++ Debug. См. Снимок экрана ниже. Это происходит в файле с именем vsprintf.c Я угадываю строку 91. Единственное сообщение, которое дает мне подсказку, это формат! = NULL.
Это меня смущает. Что может быть причиной этого? Какие шаги я могу предпринять для отладки в такой ситуации? Что такое "vsprintf.c"?
Изменение: мне удалось найти что-то в eventviewer. Я продолжу исследовать это тем временем.
С уважением,
меня.
Это ошибка утверждения, т.е. Предположение о том, что выполняемая вами функция не выполняется, в этом случае указатель не равен нулю. По внешнему виду, это строка формата. Вы используете строки формата напрямую? Если да, посмотрите там. Если нет, это, вероятно, проблема с утечкой памяти, за которой следует неправильная работа с памятью.
вызовы vsprintf
могут быть вызваны sprintf
и другими производными, возможно, вы должны проверить все эти вызовы. (Это также могут быть методы строковых классов, как я видел в VCL).
Если ошибка не вызвана одной из используемых вами библиотек, то в параметре строки формата должен быть NULL
(или 0
), который в основном является последним до ...
в прототипе.
Если вы знакомы с регулярными выражениями, это может сильно помочь при поиске шаблонов.
sprintf
в его именах?
vsprintf
- это стандартная функция. Вам необходимо проверить стек вызовов.