如何调试boost_iarchive?

时间:2019-03-22 16:19:54

标签: c++ debugging boost

在我的代码库中,有两个功能:

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)。 / p>

1。如何确定ar完成工作后save的状态。

2。由于load_binaryt设置为某个值,我猜这是通过从某个特定偏移量读取ar来设置的。我实际上如何知道正在读取ar的哪一部分?(如果我错了,请纠正我)

0 个答案:

没有答案