summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2015-11-25 16:50:22 +0100
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2016-02-25 00:50:08 +0000
commit98a8eafa915b8d57b8bdccab9981e537d77f6f4a (patch)
treec0d7dea9b32eaad23762e9c238614af54ac5211c
parentaaca25d67eb5ea252730cdcf555ecc04ce04a5e6 (diff)
add way to add additional information to the crash report
We can add several additional key value pairs during the execution of the program that will be used on the server to show more information. Change-Id: I4102adc15fc821415fa0b997ca7fe0dc4f7abcec Reviewed-on: https://gerrit.libreoffice.org/22553 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
-rw-r--r--desktop/Library_sofficeapp.mk1
-rw-r--r--desktop/inc/lib/init.hxx2
-rw-r--r--desktop/source/app/crashreport.cxx33
-rw-r--r--desktop/source/app/sofficemain.cxx2
-rw-r--r--desktop/source/app/sofficemain.h2
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_app.cxx2
-rw-r--r--desktop/source/pkgchk/unopkg/unopkg_main.h2
-rw-r--r--include/desktop/crashreport.hxx57
-rw-r--r--include/desktop/dllapi.h (renamed from desktop/source/inc/desktopdllapi.h)0
9 files changed, 96 insertions, 5 deletions
diff --git a/desktop/Library_sofficeapp.mk b/desktop/Library_sofficeapp.mk
index 13b81153ad6b..c7e1e69fbb37 100644
--- a/desktop/Library_sofficeapp.mk
+++ b/desktop/Library_sofficeapp.mk
@@ -87,6 +87,7 @@ $(eval $(call gb_Library_add_exception_objects,sofficeapp,\
desktop/source/app/check_ext_deps \
desktop/source/app/cmdlineargs \
desktop/source/app/cmdlinehelp \
+ desktop/source/app/crashreport \
desktop/source/app/desktopcontext \
desktop/source/app/desktopresid \
desktop/source/app/dispatchwatcher \
diff --git a/desktop/inc/lib/init.hxx b/desktop/inc/lib/init.hxx
index d07729731b39..5b386e4820d7 100644
--- a/desktop/inc/lib/init.hxx
+++ b/desktop/inc/lib/init.hxx
@@ -16,7 +16,7 @@
#include <com/sun/star/lang/XComponent.hpp>
#include <memory>
#include <map>
-#include "../../source/inc/desktopdllapi.h"
+#include <desktop/dllapi.h>
#include <osl/thread.h>
class LOKInteractionHandler;
diff --git a/desktop/source/app/crashreport.cxx b/desktop/source/app/crashreport.cxx
new file mode 100644
index 000000000000..0bde05979a72
--- /dev/null
+++ b/desktop/source/app/crashreport.cxx
@@ -0,0 +1,33 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <desktop/crashreport.hxx>
+
+#include <string>
+#include <fstream>
+
+osl::Mutex CrashReporter::maMutex;
+
+#if HAVE_FEATURE_BREAKPAD
+void CrashReporter::AddKeyValue(const OUString& rKey, const OUString& rValue)
+{
+ osl::MutexGuard aGuard(maMutex);
+ std::string ini_path = getIniFileName();
+ std::ofstream ini_file(ini_path, std::ios_base::app);
+ ini_file << rtl::OUStringToOString(rKey, RTL_TEXTENCODING_UTF8).getStr() << "=";
+ ini_file << rtl::OUStringToOString(rValue, RTL_TEXTENCODING_UTF8).getStr() << "\n";
+}
+#endif
+
+const char* CrashReporter::getIniFileName()
+{
+ return "/tmp/dump.ini";
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/app/sofficemain.cxx b/desktop/source/app/sofficemain.cxx
index abdcd3777fcb..7acd97c1af01 100644
--- a/desktop/source/app/sofficemain.cxx
+++ b/desktop/source/app/sofficemain.cxx
@@ -21,7 +21,7 @@
#include <config_features.h>
#include <config_folders.h>
-#include "desktopdllapi.h"
+#include <desktop/dllapi.h>
#include "app.hxx"
#include "exithelper.h"
diff --git a/desktop/source/app/sofficemain.h b/desktop/source/app/sofficemain.h
index d0a9988a5c7f..c291df7af295 100644
--- a/desktop/source/app/sofficemain.h
+++ b/desktop/source/app/sofficemain.h
@@ -20,7 +20,7 @@
#ifndef INCLUDED_DESKTOP_SOURCE_APP_SOFFICEMAIN_H
#define INCLUDED_DESKTOP_SOURCE_APP_SOFFICEMAIN_H
-#include "desktopdllapi.h"
+#include <desktop/dllapi.h>
#if defined __cplusplus
extern "C" {
diff --git a/desktop/source/pkgchk/unopkg/unopkg_app.cxx b/desktop/source/pkgchk/unopkg/unopkg_app.cxx
index d3afd077f73e..93fa127fbba7 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_app.cxx
+++ b/desktop/source/pkgchk/unopkg/unopkg_app.cxx
@@ -18,7 +18,7 @@
*/
-#include "desktopdllapi.h"
+#include <desktop/dllapi.h>
#include "dp_misc.h"
#include "unopkg_main.h"
#include "unopkg_shared.h"
diff --git a/desktop/source/pkgchk/unopkg/unopkg_main.h b/desktop/source/pkgchk/unopkg/unopkg_main.h
index 6cac46a08480..bfd9ee69b376 100644
--- a/desktop/source/pkgchk/unopkg/unopkg_main.h
+++ b/desktop/source/pkgchk/unopkg/unopkg_main.h
@@ -20,7 +20,7 @@
#ifndef INCLUDED_DESKTOP_SOURCE_PKGCHK_UNOPKG_UNOPKG_MAIN_H
#define INCLUDED_DESKTOP_SOURCE_PKGCHK_UNOPKG_UNOPKG_MAIN_H
-#include "desktopdllapi.h"
+#include <desktop/dllapi.h>
#if defined __cplusplus
extern "C" {
diff --git a/include/desktop/crashreport.hxx b/include/desktop/crashreport.hxx
new file mode 100644
index 000000000000..ace76c772816
--- /dev/null
+++ b/include/desktop/crashreport.hxx
@@ -0,0 +1,57 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_DESKTOP_CRASHREPORT_HXX
+#define INCLUDED_DESKTOP_CRASHREPORT_HXX
+
+#include <desktop/dllapi.h>
+
+#include <rtl/ustring.hxx>
+#include <osl/mutex.hxx>
+
+#include <config_features.h>
+
+#include <map>
+
+/**
+ * Provides access to the crash reporter service.
+ *
+ * Valid keys are:
+ * * AdapterVendorId
+ * * AdapterDeviceId
+ *
+ */
+class DESKTOP_DLLPUBLIC CrashReporter
+{
+public:
+ static void AddKeyValue(const OUString& rKey, const OUString& rValue);
+
+ const char* getIniFileName();
+
+private:
+
+ static std::map<OUString, OUString> maValueMap;
+
+ static osl::Mutex maMutex;
+};
+
+// Add dummy methods for the non-breakpad case. That allows us to use
+// the code without linking to the lib and without adding HAVE_FEATURE_BREAKPAD
+// everywhere we want to log something to the crash report system.
+#if HAVE_FEATURE_BREAKPAD
+#else
+void CrashReporter::AddKeyValue(const OUString& /*rKey*/, const OUString& /*rValue*/)
+{
+}
+#endif
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/desktop/source/inc/desktopdllapi.h b/include/desktop/dllapi.h
index ebc75f1214ac..ebc75f1214ac 100644
--- a/desktop/source/inc/desktopdllapi.h
+++ b/include/desktop/dllapi.h