Как отладить boost_iarchive? - PullRequest
       9

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

2 голосов
/ 22 марта 2019

В моей кодовой базе есть две функции:

void save(bar::binary_oarchive &ar)
{
   bool flag = //some condition 
   ar & flag;
   //do some work
}

void load(bar::binary_iarchive &ar)
{
   bool flag = false;
   ar & flag;
   //do some work
}

Теперь мой код дает сбой при оценке ar & flag из load.Я немного отладил и обнаружил, что

void load(bool & t){
        load_binary(& t, sizeof(t));
        int i = t;
        BOOST_ASSERT(0 == i || 1 == i);
        (void)i; // warning suppression for release builds.
    }

будет вызываться boost внутри.Теперь проблема в том, что load_binary(& t, sizeof(t)) каким-то образом изменяет значение t и устанавливает для него значение, отличное от 0 и 1. (В моем случае это значение равно 8), что приводит к BOOST_ASSERT(0 == i || 1 == i).

1.Как выяснить, что было состояние ar после того, как save завершил свою работу.

2. Поскольку load_binary устанавливает t в какое-то значение, которое я предполагаюустановка путем чтения ar с некоторого определенного смещения.Откуда я на самом деле знаю, что часть ar читается? (Поправьте меня, если я ошибаюсь)

...