예제 #1
0
GumBacktracer *
gum_backtracer_make_default (void)
{
#if defined (G_OS_WIN32)
  return gum_dbghelp_backtracer_new ();
#elif defined (HAVE_DARWIN) && defined (HAVE_OBJC)
  return gum_ns_backtracer_new ();
#elif defined (HAVE_GLIBC)
  return gum_gnu_backtracer_new ();
#elif defined (HAVE_I386) && !defined(__clang__)
  return gum_x86_backtracer_new ();
#elif defined (HAVE_ARM)
  return gum_arm_backtracer_new ();
#else
  return NULL;
#endif
}
예제 #2
0
GumBacktracer *
gum_backtracer_make_accurate (void)
{
#if defined (G_OS_WIN32)
  GumDbgHelpImpl * dbghelp;

  dbghelp = gum_dbghelp_impl_obtain ();
  if (dbghelp == NULL)
    return NULL;
  return gum_dbghelp_backtracer_new (dbghelp);
#elif defined (HAVE_DARWIN)
  return gum_darwin_backtracer_new ();
#elif defined (HAVE_LIBUNWIND)
  return gum_unw_backtracer_new ();
#else
  return NULL;
#endif
}