static void
test_cobject_tracker_fixture_enable_backtracer (
    TestCObjectTrackerFixture * fixture)
{
  GumBacktracer * backtracer;

  g_object_unref (fixture->tracker);

  backtracer = gum_backtracer_make_default ();
  test_cobject_tracker_fixture_create_tracker (fixture, backtracer);
  g_object_unref (backtracer);
}
示例#2
0
void
gum_sanity_checker_begin (GumSanityChecker * self,
                          guint flags)
{
  GumSanityCheckerPrivate * priv = self->priv;
  GumBacktracer * backtracer = NULL;

  if (priv->backtrace_block_size != 0)
    backtracer = gum_backtracer_make_default ();

  if ((flags & GUM_CHECK_BLOCK_LEAKS) != 0)
  {
    priv->alloc_tracker =
        gum_allocation_tracker_new_with_backtracer (backtracer);

    if (priv->backtrace_block_size > 0)
    {
      gum_allocation_tracker_set_filter_function (priv->alloc_tracker,
          gum_sanity_checker_filter_backtrace_block_size, self);
    }

    priv->alloc_probe = gum_allocator_probe_new ();
    g_object_set (priv->alloc_probe, "allocation-tracker", priv->alloc_tracker,
        NULL);
  }

  if ((flags & GUM_CHECK_INSTANCE_LEAKS) != 0)
  {
    priv->instance_tracker = gum_instance_tracker_new ();
    gum_instance_tracker_set_type_filter_function (priv->instance_tracker,
        gum_sanity_checker_filter_out_gparam, self);
    gum_instance_tracker_begin (priv->instance_tracker, NULL);
  }

  if ((flags & GUM_CHECK_BLOCK_LEAKS) != 0)
  {
    gum_allocation_tracker_begin (priv->alloc_tracker);
    gum_allocator_probe_attach_to_apis (priv->alloc_probe, priv->heap_apis);
  }

  if ((flags & GUM_CHECK_BOUNDS) != 0)
  {
    priv->bounds_checker = gum_bounds_checker_new (backtracer,
        priv->output, priv->output_user_data);
    g_object_set (priv->bounds_checker,
        "front-alignment", priv->front_alignment_granularity, NULL);
    gum_bounds_checker_attach_to_apis (priv->bounds_checker, priv->heap_apis);
  }

  if (backtracer != NULL)
    g_object_unref (backtracer);
}
示例#3
0
 extern "C" Backtracer * Backtracer_make_default () { gum_init (); return new BacktracerImpl (gum_backtracer_make_default ()); }
示例#4
0
static void
test_backtracer_fixture_setup (TestBacktracerFixture * fixture,
                               gconstpointer data)
{
  fixture->backtracer = gum_backtracer_make_default ();
}