#c #debugging #boost
#c #отладка #повышение
Вопрос:
В моей кодовой базе есть две функции:
void save(bar::binary_oarchive amp;ar)
{
bool flag = //some condition
ar amp; flag;
//do some work
}
void load(bar::binary_iarchive amp;ar)
{
bool flag = false;
ar amp; flag;
//do some work
}
Теперь мой код дает сбой при вычислении ar amp; flag
of load
.
Я немного отладил и обнаружил, что
void load(bool amp; t){
load_binary(amp; t, sizeof(t));
int i = t;
BOOST_ASSERT(0 == i || 1 == i);
(void)i; // warning suppression for release builds.
}
будет вызван boost внутренне.
Теперь проблема в том, что load_binary(amp; t, sizeof(t))
каким-то образом изменяет значение vale t
и устанавливает его в некоторое значение, отличное от 0 и 1. (В моем случае оно устанавливает 8 ), что приводит к BOOST_ASSERT(0 == i || 1 == i)
.
1. Как мне выяснить, в каком состоянии он был ar
после save
завершения своей работы.
2.As load_binary
устанавливается t
в некоторое значение, которое, как я предполагаю, устанавливается путем считывания ar
из некоторого определенного смещения. Как мне на самом деле узнать, какая часть ar
читается?(поправьте меня, если я ошибаюсь)