本文整理汇总了C++中BPatch::removeUserEventCallback方法的典型用法代码示例。如果您正苦于以下问题:C++ BPatch::removeUserEventCallback方法的具体用法?C++ BPatch::removeUserEventCallback怎么用?C++ BPatch::removeUserEventCallback使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BPatch
的用法示例。
在下文中一共展示了BPatch::removeUserEventCallback方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: defined
// static int mutatorTest(BPatch_thread *appThread, BPatch_image *appImage)
test_results_t test_callback_2_Mutator::executeTest()
{
// a simple single threaded user messagin scenario where we want to send
// async messages at function entry/exit and call points.
// load libtest12.so -- currently only used by subtest 5, but make it generally
// available
const char *libname = "./libTest12.so";
test7err = false;
test7done = false;
callback_counter = 0;
elog.resize(0);
#if defined(arch_x86_64_test)
if (appProc->getAddressWidth() == 4)
libname = "./libTest12_m32.so";
#endif
dprintf("%s[%d]: loading test library: %s\n", __FILE__, __LINE__, libname);
if (!appProc->loadLibrary(libname))
{
logerror("%s[%d]: failed to load library %s, cannot proceed\n",
__FILE__, __LINE__, libname);
appProc->terminateExecution();
return FAILED;
}
dprintf("%s[%d]: loaded test library: %s\n", __FILE__, __LINE__, libname);
BPatchUserEventCallback cb = test7cb;
if (!bpatch->registerUserEventCallback(cb))
{
FAIL_MES(TESTNAME, TESTDESC);
logerror("%s[%d]: could not register callback\n", __FILE__, __LINE__);
appProc->terminateExecution();
return FAILED;
}
// instrument entry and exit of call7_1, as well as call points inside call7_1
const char *call1name = "test_callback_2_call1";
BPatch_function *call7_1 = findFunction(call1name, appImage,TESTNO, TESTNAME);
BPatch_point *entry = findPoint(call7_1, BPatch_entry,TESTNO, TESTNAME);
if (NULL == entry)
{
logerror("%s[%d]: Unable to find entry point to function %s\n",
__FILE__, __LINE__, call1name);
bpatch->removeUserEventCallback(test7cb);
appProc->terminateExecution();
return FAILED;
}
BPatch_point *exit = findPoint(call7_1, BPatch_exit,TESTNO, TESTNAME);
if (NULL == entry)
{
logerror("%s[%d]: Unable to find exit point to function %s\n",
__FILE__, __LINE__, call1name);
bpatch->removeUserEventCallback(test7cb);
appProc->terminateExecution();
return FAILED;
}
BPatch_point *callsite = findPoint(call7_1, BPatch_subroutine,TESTNO, TESTNAME);
if (NULL == callsite)
{
logerror("%s[%d]: Unable to find subroutine call point in function %s\n",
__FILE__, __LINE__, call1name);
bpatch->removeUserEventCallback(test7cb);
appProc->terminateExecution();
return FAILED;
}
// These are our asynchronous message functions (in libTest12) that we
// attach to the "interesting" points
BPatch_function *reportEntry = findFunction("reportEntry", appImage,TESTNO, TESTNAME);
BPatch_function *reportExit = findFunction("reportExit", appImage,TESTNO, TESTNAME);
BPatch_function *reportCallsite = findFunction("reportCallsite", appImage,TESTNO, TESTNAME);
if (!reportEntry)
{
logerror("%s[%d]: reportEntry = NULL\n", FILE__, __LINE__);
bpatch->removeUserEventCallback(test7cb);
appProc->terminateExecution();
return FAILED;
}
if (!reportExit)
{
logerror("%s[%d]: reportExit = NULL\n", FILE__, __LINE__);
bpatch->removeUserEventCallback(test7cb);
appProc->terminateExecution();
return FAILED;
}
//.........这里部分代码省略.........