forked from qt-creator/qt-creator
50 lines
1005 B
C++
50 lines
1005 B
C++
#pragma once
|
|
|
|
#include <QThread>
|
|
#include <windows.h>
|
|
|
|
class WinDbgThread : protected QThread
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
WinDbgThread(QObject* parent = 0);
|
|
~WinDbgThread();
|
|
|
|
void startProcess(const QString& filename);
|
|
void attachToProcess(DWORD processId);
|
|
void continueProcess();
|
|
void pauseProcess();
|
|
void stopProcess();
|
|
const QString& processFileName() { return m_processFileName; }
|
|
|
|
QObject* asQObject() { return this; }
|
|
//using QThread::isRunning;
|
|
|
|
signals:
|
|
void debugEventOccured(void*);
|
|
|
|
protected:
|
|
void run();
|
|
|
|
private:
|
|
void internalStartProcess();
|
|
void suspend();
|
|
void resume();
|
|
|
|
enum State {
|
|
Idle,
|
|
ProcessRunning,
|
|
ProcessPaused
|
|
};
|
|
|
|
void setState(State s);
|
|
|
|
private:
|
|
State m_state;
|
|
QString m_processFileName;
|
|
HANDLE m_hThisThread;
|
|
PROCESS_INFORMATION m_pi;
|
|
bool m_bOwnsProcess;
|
|
bool m_bAbortEventPollingLoop;
|
|
};
|