pykd/samples/dbg/dbgcore.py
SND\kernelnet_cp 78fbe47e76 [0.1.x] added : simple "simple debugger"
git-svn-id: https://pykd.svn.codeplex.com/svn@75462 9b283d60-5439-405e-af05-b73fd8c4d996
2017-11-08 17:27:51 +04:00

70 lines
1.7 KiB
Python

import pykd
from PySide.QtCore import QThread
from PySide.QtCore import QObject
from PySide.QtCore import Signal
class DbgThread( QThread ):
def __init__(self, func):
QThread.__init__(self)
self.func = func
def run(self):
self.func()
self.exit()
class DbgCore( QObject ):
targetBreak = Signal()
targetRunning = Signal()
targetAttached = Signal()
targetDetached = Signal()
def close(self):
if self.processOpened:
if self.thread != None:
self.breakin()
def openProcess( self, name ):
pykd.startProcess( name )
self.processOpened = True
self.targetAttached.emit()
self.targetBreak.emit()
def detachProcess(self):
pykd.detachProcess()
self.processOpened = False
self.targetDetached.emit()
def killProcess(self):
pykd.killProcess()
self.processOpened = False
self.targetDetached.emit()
def breakin( self ):
pykd.breakin()
def go( self ):
self.thread = DbgThread( pykd.go )
self.thread.finished.connect( self.onDebugStop )
self.targetRunning.emit()
self.thread.start()
def step( self ):
self.thread = DbgThread( pykd.step )
self.thread.finished.connect( self.onDebugStop )
self.targetRunning.emit()
self.thread.start()
def onDebugStop(self):
self.thread.wait(100)
self.thread = None
self.targetBreak.emit()
def __init__(self):
QObject.__init__(self)
self.thread = None
self.processOpened = False