You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
154 lines
4.2 KiB
154 lines
4.2 KiB
/***************************************************************************
|
|
phpdebuggubed.cpp
|
|
-------------------
|
|
begin : 2004-03-12
|
|
copyright : (C) 2004 Linus McCabe <linus@mccabe.nu>
|
|
***************************************************************************/
|
|
|
|
/****************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************/
|
|
|
|
#ifndef QUANTADEBUGGERGUBED_H
|
|
#define QUANTADEBUGGERGUBED_H
|
|
|
|
#include <kserversocket.h>
|
|
#include <kstreamsocket.h>
|
|
#include <qptrlist.h>
|
|
#include <kurl.h>
|
|
#include <qdom.h>
|
|
|
|
#include "debuggerclient.h"
|
|
|
|
typedef QValueList<QString> WatchList;
|
|
typedef QMap<QString, QString> StringMap;
|
|
|
|
class QuantaDebuggerGubed : public DebuggerClient
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
QuantaDebuggerGubed(QObject *parent, const char* name, const QStringList&);
|
|
~QuantaDebuggerGubed();
|
|
|
|
// Execution states
|
|
enum State
|
|
{
|
|
Pause = 0,
|
|
Trace,
|
|
Run
|
|
};
|
|
// Error codes
|
|
enum Errors
|
|
{
|
|
Warning = 2,
|
|
Notice = 8,
|
|
User_Error = 256,
|
|
User_Warning = 512,
|
|
User_Notice = 1024
|
|
};
|
|
|
|
// Protocol version
|
|
static const char protocolversion[];
|
|
|
|
// Manager interaction
|
|
const uint supports(DebuggerClientCapabilities::Capabilities);
|
|
|
|
// Execution control
|
|
void request();
|
|
void trace();
|
|
void run();
|
|
void skip();
|
|
void stepInto();
|
|
void stepOver();
|
|
void stepOut();
|
|
void pause();
|
|
void kill();
|
|
void setExecutionState(State newstate);
|
|
|
|
// Connection
|
|
void startSession();
|
|
void endSession();
|
|
|
|
// Return name of debugger
|
|
QString getName();
|
|
|
|
// New file opened in quanta
|
|
void fileOpened(const QString& file);
|
|
|
|
// Settings
|
|
void readConfig(QDomNode node);
|
|
void showConfig(QDomNode node);
|
|
|
|
// Breakpoints
|
|
void addBreakpoint(DebuggerBreakpoint* breakpoint);
|
|
void removeBreakpoint(DebuggerBreakpoint* breakpoint);
|
|
void showCondition(const StringMap &args);
|
|
|
|
// Variables
|
|
void addWatch(const QString &variable);
|
|
void removeWatch(DebuggerVariable *var);
|
|
void variableSetValue(const DebuggerVariable &variable);
|
|
|
|
private:
|
|
KNetwork::KStreamSocket *m_socket;
|
|
KNetwork::KServerSocket *m_server;
|
|
QString m_command, m_buffer;
|
|
long m_datalen;
|
|
|
|
QString m_serverBasedir;
|
|
QString m_localBasedir;
|
|
QString m_serverPort;
|
|
QString m_serverHost;
|
|
QString m_startsession;
|
|
QString m_listenPort;
|
|
bool m_useproxy;
|
|
State m_executionState, m_defaultExecutionState;
|
|
long m_errormask;
|
|
long m_displaydelay;
|
|
|
|
WatchList m_watchlist;
|
|
|
|
// bool sendCommand(const QString&, const QString&);
|
|
bool sendCommand(const QString& command, StringMap args);
|
|
bool sendCommand(const QString& command, char * firstarg, ...);
|
|
|
|
void processCommand(const QString&);
|
|
void sendWatches();
|
|
void sendBreakpoints();
|
|
void debuggingState(bool enable);
|
|
void connected();
|
|
|
|
QString mapServerPathToLocal(const QString& serverpath);
|
|
QString mapLocalPathToServer(const QString& localpath);
|
|
QString bpToGubed(DebuggerBreakpoint* breakpoint);
|
|
|
|
// Communication helpers
|
|
QString phpSerialize(StringMap args);
|
|
StringMap parseArgs(const QString &args);
|
|
|
|
// Variables
|
|
DebuggerVariable* parsePHPVariables(const QString &varstring);
|
|
DebuggerVariable* parsePHPVariables(QString &str);
|
|
void showWatch(const QString& data);
|
|
|
|
|
|
public slots:
|
|
// Socket slots
|
|
void slotConnected(const KNetwork::KResolverEntry &);
|
|
void slotConnectionClosed();
|
|
void slotError(int error);
|
|
void slotReadyRead();
|
|
void slotReadyAccept();
|
|
|
|
signals:
|
|
void updateStatus(DebuggerUI::DebuggerStatus);
|
|
};
|
|
|
|
#endif
|