Как отладить boost_iarchive?

#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 читается?(поправьте меня, если я ошибаюсь)