forked from qt-creator/qt-creator
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#pragma once
 | 
						|
 | 
						|
#include "windbgeventcallback.h"
 | 
						|
 | 
						|
#include <QObject>
 | 
						|
#include <QVector>
 | 
						|
 | 
						|
#define DBGHELP_TRANSLATE_TCHAR
 | 
						|
#include <Dbghelp.h>
 | 
						|
 | 
						|
class WinDbgThread;
 | 
						|
 | 
						|
class Debugger : public QObject
 | 
						|
{
 | 
						|
    Q_OBJECT
 | 
						|
public:
 | 
						|
    Debugger(QObject* parent = 0);
 | 
						|
    ~Debugger();
 | 
						|
 | 
						|
    void openProcess(const QString& filename);
 | 
						|
    void closeProcess();
 | 
						|
    void breakAtCurrentPosition();
 | 
						|
    void continueProcess();
 | 
						|
 | 
						|
    struct StackFrame
 | 
						|
    {
 | 
						|
        QString symbol;
 | 
						|
        QString filename;
 | 
						|
        uint    line;
 | 
						|
    };
 | 
						|
 | 
						|
    typedef QVector<StackFrame> StackTrace;
 | 
						|
    StackTrace stackTrace() { return m_currentStackTrace; }
 | 
						|
 | 
						|
signals:
 | 
						|
    void debugOutput(const QString&);
 | 
						|
    void debuggeePaused();
 | 
						|
 | 
						|
protected:
 | 
						|
    void timerEvent(QTimerEvent*);
 | 
						|
 | 
						|
private:
 | 
						|
    void handleDebugEvent();
 | 
						|
    void handleCreateProcessEvent(DEBUG_EVENT* e);
 | 
						|
    void handleExceptionEvent(DEBUG_EVENT* e);
 | 
						|
    void handleOutputDebugStringEvent(DEBUG_EVENT* e);
 | 
						|
 | 
						|
private:
 | 
						|
    HANDLE           m_hDebuggeeProcess;
 | 
						|
    HANDLE           m_hDebuggeeThread;
 | 
						|
    HANDLE           m_hDebuggeeImage;
 | 
						|
    StackTrace       m_currentStackTrace;
 | 
						|
    //DWORD64 m_dwModuleBaseAddress;
 | 
						|
 | 
						|
    int                   m_watchTimer;
 | 
						|
    IDebugClient5*        m_pDebugClient;
 | 
						|
    IDebugControl4*       m_pDebugControl;
 | 
						|
    IDebugSystemObjects4* m_pDebugSystemObjects;
 | 
						|
    IDebugSymbols3*       m_pDebugSymbols;
 | 
						|
    IDebugRegisters2*     m_pDebugRegisters;
 | 
						|
    WinDbgEventCallback   m_callbackEvent;
 | 
						|
 | 
						|
    //struct ThreadInfo
 | 
						|
    //{
 | 
						|
    //    ULONG64 handle, dataOffset, startOffset;
 | 
						|
    //};
 | 
						|
 | 
						|
    //QVector<ThreadInfo>   m_threadlist;
 | 
						|
 | 
						|
    friend class WinDbgEventCallback;
 | 
						|
};
 |