1 /*
2     SPDX-FileCopyrightText: 2021 Harald Sitter <sitter@kde.org>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #pragma once
8 
9 #include "drkonqibackends.h"
10 
11 #include <QHash>
12 #include <QTemporaryDir>
13 
14 #include <memory>
15 
16 class QProcess;
17 
18 class CoredumpBackend : public AbstractDrKonqiBackend
19 {
20     Q_OBJECT
21 public:
22     using AbstractDrKonqiBackend::AbstractDrKonqiBackend;
23     bool init() override;
24     void prepareForDebugger() override;
25 
26 protected:
27     CrashedApplication *constructCrashedApplication() override;
28     DebuggerManager *constructDebuggerManager() override;
29 
30 private:
31     std::unique_ptr<QTemporaryDir> m_coreDir;
32     std::unique_ptr<CrashedApplication> m_crashedApplication;
33     DebuggerManager *m_debuggerManager; // parented
34     QHash<QByteArray, QByteArray> m_journalEntry;
35     const QByteArray m_cursor;
36     std::unique_ptr<QProcess> m_preparationProc;
37 
38 #ifdef COREDUMPD_SUPPORTS_DEBUGGER_ARGUMENTS
39     const QString m_backendType = QStringLiteral("coredumpd-248+");
40 #else
41     const QString m_backendType = QStringLiteral("coredumpd");
42 #endif
43 };
44