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;
 | |
| };
 |