Повышенная сериализация не работает в режиме выпуска при работе в режиме отладки - PullRequest
2 голосов
/ 28 июля 2010

Я использую расширенную сериализацию с файлами XML с помощью программы на C ++. Когда я тестирую свою программу в режиме отладки, она работает нормально. Затем я пытаюсь с тем же файлом в режиме выпуска, но моя программа не работает при загрузке файлов. Я даже пытался сгенерировать xml-файлы с моей программой в режиме релиза, загрузить их обратно, и он тоже вылетает.

Стек вызовов показывает это:

packs_ui_main.exe!boost::archive::basic_xml_grammar<char>::parse_start_tag(std::basic_istream<char,std::char_traits<char> > & is={...})  Line 219   C++

Фактическая ошибка еще дальше, но у меня нет отладочной информации глубже в стеке вызовов. Я не понимаю, какие настройки могут отличаться между выпуском и отладкой, чтобы объяснить этот сбой.

РЕДАКТИРОВАТЬ 1

Вот определения препроцессора, которые я использую в отладке:

WIN32;_CONSOLE;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS

Вот определения препроцессора, которые я использую в релизе:

WIN32;NDEBUG;_WINDOWS;_CONSOLE;__WXMSW__;NOPCH;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS

Некоторые из них взяты из wxWidgets

РЕДАКТИРОВАТЬ 2

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

Например, "title" отображается как "X ~ T" Другие символы, такие как пробелы, полностью меняют порядок строк и вставляют специальные символы, которые я не могу скопировать-вставить (вероятно, \ 0)

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

Ответы [ 2 ]

2 голосов
/ 28 июля 2010

В 100% случаев, когда что-то происходит в отладчике, но что-то не получается, вы заполняете локальный массив функции.

1 голос
/ 03 августа 2010

Проблема была связана с тем, что я компилировал с использованием

Multi-threaded Debug DLL (/MDd)

вместо

Multi-threaded DLL (/MD)

в режиме разблокировки.

...