V003. Unrecognized error found...
- Файл стектрейса
- Получение препроцессированного файла
- Проблемы, связанные с нехваткой оперативной памяти
Сообщение V003 означает, что произошла критическая ошибка внутри анализатора. Скорее всего, в этом случае вообще никаких сообщений про анализируемый файл не будет выдано.
Хотя сообщение V003 возникает достаточно редко, мы будем вам благодарны, если вы поможете нам исправить проблему, которая привела к этому сообщению. Для этого пришлите, пожалуйста, файл со стектрейсом ('*.PVS-Studio.stacktrace.txt'), препроцессированный i-файл, на котором возникла проблема ('*.PVS-Studio.i'), и соответствующий ему конфигурационный файл запуска ('*.PVS-Studio.cfg') через страницу поддержки.
Файл стектрейса
При получении ошибки вида:
V003 Unrecognized error found: stacktrace was written to the file
source.cpp.PVS-Studio.stacktrace.txt 1
Вы можете перейти к текстовому файлу, который имеет примерно следующий вид:
PVS-Studio version: 7.XX.XXXXX.XXXX
#NN Object "[0xffffffffffffffff]", at 0xffffffffffffffff, in
....
#1 Object "[0xb39b7e]", at 0xb39b7e, in
#0 Object "[0xcfac19]", at 0xcfac19, in
По адресам из этого файла мы можем определить источник ошибки.
Получение препроцессированного файла
Препроцессированный i-файл получается из исходного файла (например, 'file.cpp') после работы препроцессора. Для того чтобы получить такой файл и конфигурационные файлы запуска нужно на вкладке 'Common Analyzer Settings' настроек PVS-Studio установить опцию 'RemoveIntermediateFiles' в 'False' и заново выполнить анализ одного этого файла.
Если для анализа проекта применяется утилита 'pvs-studio-analyzer', то служебные файлы могут быть получены при помощи флага '--dump-files'.
После этого в папке проекта надо найти соответствующий i-файл (например, 'file.PVS-Studio.i') и соответствующий ему 'file.PVS-Studio.cfg'.
Проблемы, связанные с нехваткой оперативной памяти
Иногда анализатор может вести себя нестабильно при работе с большими файлами (или файлами, включающими в себя много других). Большое потребление памяти может привести к данной ошибке:
V003 Unrecognized error found: ' bad allocation'. source.cpp 1
Для исправления стоит понизить число потоков.
В плагине Visual Studio установите опцию 'ThreadCount' в меньшее значение.
При использовании утилиты 'pvs-studio-analyzer' или 'CompilerCommandsAnalyzer.exe' уменьшите число, передаваемое в параметр '-j' / '--threads'.
В проектах, основанных на Unreal Engine используйте файл 'BuildConfiguration.xml' с такими опциями:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration xmlns="https://www.unrealengine.com/BuildConfiguration">
<ParallelExecutor>
<MaxProcessorCount>1</MaxProcessorCount>
</ParallelExecutor>
</Configuration>
Более подробная документация для этого файла доступна по ссылке.