Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Crash log is a log file automatically created on Set top boxes when a crash occurs. This information is useful for offline debugging. 

Core Dump and Minidump


What is Coredump?

Core core dump files generated after an uncaught signal in a process (as a SIGSEGV or SIGQUIT), are generated in the base directory where the program was executed, and named as the core dumps starts with the name  as “core” or “core.PID”.

How to generate a core file?

By default size of the core will be zero, To generate the core, we need to set the size of the core to unlimited. 

...

Core pattern is helpful in the case if there are couple of core dumps files in one directory and we don't know which program caused it.

What is Minidump? 


  • A list of the executable and shared libraries that were loaded in the process at the time the dump was created. This list includes both file names and identifiers for the particular versions of those files that were loaded.
  • A list of threads present in the process. For each thread, the minidump includes the state of the processor registers, and the contents of the threads' stack memory.
  • Other information about the system on which the dump was collected: processor and operating system versions, the reason for the dump, and so on. 

Google Breakpad

Breakpad is a library that records crashes in compact "minidump" files.

...

It  produce C and C++ stack traces from minidumps.

...

Breakpad can also write minidumps on request for programs that have not crashed. 

  



How to Integrate Google Breakpad library?

  • Link against libbreakpad_client library.

    code

  • #include

    "client/linux/handler/exception_handler.h“

  • Instantiate an ExceptionHandler object, ExceptionHandler constructor requires a path where it can write minidumps, as well as a callback function to receive information about minidumps that were written.

What is Minidump? 

...

     

Code Block
#include "client/linux/handler/exception_handler.h“ // Include Header file for exception handler
static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
  printf("Dump path: %s\n", descriptor.path());
  return succeeded;
}

int main(int argc, char* argv[])
{
  google_breakpad::MinidumpDescriptor descriptor("/tmp"); 
  google_breakpad::ExceptionHandler eh(descriptor, // Minidump will be saved in /tmp
                                       NULL,
                                       dumpCallback, //Callback
                                       NULL,
                                       true,

dump_syms is used for symbol extraction.

Panel
dump_syms ./gpsample_app > gpsample_app.sym, will generate symbol file.

minidump_stackwalk is used for stack trace .
It takes a minidump and its corresponding text-format symbols and produce a symbolized stacktrace.

Panel

minidump_stackwalk minidump.dmp gpsample_app.sym


uploadDumps.sh collects core dumps/ mini dumps and log files to crash server whenever any applications crashes.
Use minidump_stackwalk to see the stack trace.

...