X86 为什么dynamorio的这个指令跟踪程序的输出比我的多?

X86 为什么dynamorio的这个指令跟踪程序的输出比我的多?,x86,instrumentation,instructions,X86,Instrumentation,Instructions,我正在尝试使用工具DynamoRIO进行指令跟踪。我发现他们的站点上已经有一个指令跟踪的示例:。然而,我不明白他们为什么在这个系统中使用这么多操作。我尝试以另一种简单的方式重新编写此函数: instrument_instr(void *drcontext, instrlist_t *ilist, instr_t *where) { app_pc pc; per_thread_t *data; data = drmgr_get_tls_field(drcontext,

我正在尝试使用工具DynamoRIO进行指令跟踪。我发现他们的站点上已经有一个指令跟踪的示例:。然而,我不明白他们为什么在这个系统中使用这么多操作。我尝试以另一种简单的方式重新编写此函数:

instrument_instr(void *drcontext, instrlist_t *ilist, instr_t *where)
{
    app_pc pc;
    per_thread_t *data;

    data  = drmgr_get_tls_field(drcontext, tls_index);
    pc = instr_get_app_pc(where);

    fprintf(data->logf, PIFX",%s\n",
        (ptr_uint_t)pc, decode_opcode_name(instr_get_opcode(where)));
}
我发现这个简单的方法似乎也能很好地工作,只是它的输出比官方的示例要少

我不知道为什么我的方法日志较少,因为我不知道为什么官方示例代码会执行如此琐碎的操作。有人熟悉迪纳莫里奥的API吗?(尤其是
drmgr\u register\u bb\u instrumentation\u event
function。我不明白他们为什么要这样使用回调函数)