1 /* 2 gdbinjector.h 3 4 This file is part of GammaRay, the Qt application inspection and 5 manipulation tool. 6 7 Copyright (C) 2010-2021 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com 8 Author: Volker Krause <volker.krause@kdab.com> 9 10 Licensees holding valid commercial KDAB GammaRay licenses may use this file in 11 accordance with GammaRay Commercial License Agreement provided with the Software. 12 13 Contact info@kdab.com if any conditions of this licensing are not clear to you. 14 15 This program is free software; you can redistribute it and/or modify 16 it under the terms of the GNU General Public License as published by 17 the Free Software Foundation, either version 2 of the License, or 18 (at your option) any later version. 19 20 This program is distributed in the hope that it will be useful, 21 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 GNU General Public License for more details. 24 25 You should have received a copy of the GNU General Public License 26 along with this program. If not, see <http://www.gnu.org/licenses/>. 27 */ 28 29 #ifndef GAMMARAY_GDBINJECTOR_H 30 #define GAMMARAY_GDBINJECTOR_H 31 32 #include "injector/debuggerinjector.h" 33 34 namespace GammaRay { 35 class GdbInjector : public DebuggerInjector 36 { 37 Q_OBJECT 38 public: 39 explicit GdbInjector(const QString &executableOverride = QString()); 40 QString name() const override; 41 bool launch(const QStringList &programAndArgs, const QString &probeDll, 42 const QString &probeFunc, const QProcessEnvironment &env) override; 43 bool attach(int pid, const QString &probeDll, const QString &probeFunc) override; 44 45 protected: 46 void addFunctionBreakpoint(const QByteArray &function) override; 47 void addMethodBreakpoint(const QByteArray &method) override; 48 void clearBreakpoints() override; 49 void printBacktrace() override; 50 void loadSymbols(const QByteArray &library) override; 51 void parseStandardError(const QByteArray & line) override; 52 53 private: 54 void setupGdb(); 55 /** Certain configurations crash with auto-solib-add off. */ 56 bool supportsAutoSolibAddOff() const; 57 }; 58 } 59 60 #endif // GAMMARAY_GDBINJECTOR_H 61