Z3_open_log() によって作成されたログ ファイルは、コマンド ライン オプション /log myfile を介して、Z3.exe (lib ではなくスタンドアロン インタープリター) で再生できます。今日の時点で、そのようなリプレイを可能にする API を Z3 ライブラリで見たことがありません。とりあえず、リプレイはデバッグ解析とみなされることは承知しております。
ただし、ライブラリをハックして (z3_replayer.h で z3_replayer クラスを公開するだけ)、それを使用して任意のログ ファイルを再生できます。これは非常に簡単です。私の小さな実現可能性証明のソース コードを以下に示します。私の知る限り、問題なく動作しています。デバッグ目的でセッションを再生する必要がある場合があるため、それができるのは非常に良いことだと思います。少し重いプログラム全体からではなく、ファイルから再生できるのは良いことです。
どんなフィードバックでも大歓迎です。また、この機能をライブラリに統合できるかどうかも知りたいです。
AG。
#include <fstream>
#include <iostream>
#include "api/z3_replayer.h"
int main(int argc, char * argv[])
{
const char * filename = argv[1];
std::ifstream in(filename);
if (in.bad() || in.fail()) {
std::cerr << "Error: failed to open file: " << filename << "\n";
exit(EXIT_FAILURE);
}
z3_replayer r(in);
r.parse();
Z3_context ctx = reinterpret_cast<Z3_context>(r.get_obj(0));
check(ctx,Z3_L_TRUE); // this function is taken from the c examples
return 0;
}