C++ 프로그램에서 xml 파일로 부스트 직렬화를 사용하고 있습니다. 프로그램을 디버그 모드로 테스트 할 때 정상적으로 작동합니다. 그런 다음 릴리즈 모드에서 똑같은 파일을 시도하지만 파일을로드 할 때 프로그램이 실패합니다. 나는 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++
실제 버그가 더하지만 난 호출 스택에 깊은 디버그 정보가 없습니다 :
호출 스택
이 표시됩니다. 릴리스와 디버그간에 어떤 종류의 설정이 다를 수 있는지 이해할 수 없어이 충돌을 설명 할 수 있습니다. 여기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에서
EDIT 2
XML 파일에 문자열을 저장하면 릴리스와 디버그 구성이 다르게 나타납니다. 릴리스 버전이 다른 인코딩을 사용하는 것처럼 보입니다. 공간이 완전히 문자열의 순서를 변경하고 내가 복사 - 붙여 넣기를 할 수없는 특수 문자를 삽입 같은
예를 들어"제목은" 다른 문자 "X ~ T"로 표시됩니다 (아마 \ 0)
두 구성 모두 멀티 바이트 문자 집합을 사용하고 있는지 확인했습니다.
C++에는 "디버그 모드"또는 "릴리스 모드"라는 개념이 없습니다. 컴파일러와 다른 플래그를 추가하는 것이 도움이 될 수 있습니다. – Stephen