Conan package for the breakpad library (https://chromium.googlesource.com/breakpad/breakpad/).
The following example shows how to use this Conan package with CMake. See Conan's documentation for other generators if you are not using CMake.
Add the package to your project's conanfile.txt:
[requires]
breakpad/1.0.0@shinichy/stable
[generators]
cmake
Your CMakeLists.txt:
cmake_minimum_required( VERSION 2.8.12 )
project( PackageTest )
include( ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake )
conan_basic_setup()
if (APPLE)
find_library(BREAKPAD NAMES Breakpad)
if (NOT BREAKPAD)
message(FATAL_ERROR "Breakpad not found")
endif()
elseif (MSVC)
find_package(BREAKPAD)
if(NOT BREAKPAD_FOUND)
message(FATAL_ERROR "Breakpad not found")
endif ()
set(CMAKE_CXX_FLAGS "/wd4091 /wd4577")
endif ()
add_executable( example example.cpp )
if (APPLE)
target_link_libraries( example ${BREAKPAD} )
file(COPY ${BREAKPAD} DESTINATION Frameworks)
elseif (MSVC)
include_directories(${BREAKPAD_INCLUDE_DIRS})
target_link_libraries( example ${BREAKPAD_LIBRARIES} )
endif ()
And then your example.cpp:
#ifdef __APPLE__
#include "client/mac/handler/exception_handler.h"
static bool dumpCallback(const char* _dump_dir, const char* _minidump_id, void* context, bool success) {
printf("Dump path: %s\n", _dump_dir);
return success;
}
#endif
#ifdef _WIN32
#include "client/windows/handler/exception_handler.h"
bool dumpCallback(const wchar_t* _dump_dir,
const wchar_t* _minidump_id,
void* context,
EXCEPTION_POINTERS* exinfo,
MDRawAssertionInfo* assertion,
bool success) {
wprintf(L"Dump path: %s\n", _dump_dir);
return true;
}
#endif
void makeCrash() { volatile int* a = (int*)(NULL); *a = 1; }
int main(int argc, char* argv[]) {
#ifdef __APPLE__
std::string path = "/tmp";
google_breakpad::ExceptionHandler eh(path, NULL, dumpCallback, NULL, true, NULL);
#endif
#ifdef _WIN32
std::wstring path = L"C:\\tmp";
google_breakpad::ExceptionHandler eh(path, 0, dumpCallback, 0, google_breakpad::ExceptionHandler::HandlerType::HANDLER_ALL);
#endif
makeCrash();
return 0;
}
Then you can use it as:
$ mkdir build && cd build
$ conan install ..
$ cmake .. -G "Visual Studio 14 Win64"
$ cmake --build . --config Release
$ bin/example