mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-19 19:13:22 +08:00
69 lines
2.7 KiB
Python
69 lines
2.7 KiB
Python
|
|
import unittest
|
|
import target
|
|
import pykd
|
|
|
|
class DbgClientTest( unittest.TestCase ):
|
|
|
|
def testGetDebuggeeType( self ):
|
|
c, q = pykd.getDebuggeeType()
|
|
self.assertEqual( c, pykd.DEBUG_CLASS_USER_WINDOWS )
|
|
self.assertEqual( q, pykd.DEBUG_USER_WINDOWS_PROCESS )
|
|
|
|
def testIsKernelDebugging( self ):
|
|
self.assertFalse( pykd.isKernelDebugging() )
|
|
|
|
def testNumberProcessors( self ):
|
|
"""Number of processors can not be 0"""
|
|
self.assertNotEqual( 0, pykd.getNumberProcessors() )
|
|
|
|
def testPageSize( self ):
|
|
"""Size of memory page must be >= 4kb"""
|
|
self.assertTrue( pykd.getPageSize() >= 4*1024 )
|
|
|
|
def testCurrentThreadContext( self ):
|
|
"""Some check of current thread context content"""
|
|
ctx = pykd.getContext()
|
|
# for reg in ctx:
|
|
# regName = ""
|
|
# if ctx.processorType() == "X86":
|
|
# regName = pykd.diaI386Regs[ reg[0] ]
|
|
# else:
|
|
# regName = pykd.diaAmd64Regs[ reg[0] ]
|
|
# pykd.dprint( "\n" + regName + ": 0x%x " % reg[1])
|
|
self.assertNotEqual( 0, len(ctx) )
|
|
self.assertNotEqual( 0, ctx.ip() )
|
|
self.assertNotEqual( 0, ctx.csp() )
|
|
|
|
self.assertEqual( (ctx.get(pykd.CV_REG_AH) << 8) | ctx.get(pykd.CV_REG_AL), ctx.get(pykd.CV_REG_AX) )
|
|
self.assertEqual( ctx.get(pykd.CV_REG_AX), ctx.get(pykd.CV_REG_EAX) & 0xffff )
|
|
if ctx.processorType() == "X64":
|
|
self.assertEqual( ctx.get(pykd.CV_REG_EAX), ctx.get(pykd.CV_AMD64_RAX) & 0xffffffff )
|
|
|
|
self.assertEqual( (ctx.get(pykd.CV_REG_DH) << 8) | ctx.get(pykd.CV_REG_DL), ctx.get(pykd.CV_REG_DX) )
|
|
self.assertEqual( ctx.get(pykd.CV_REG_DX), ctx.get(pykd.CV_REG_EDX) & 0xffff )
|
|
if ctx.processorType() == "X64":
|
|
self.assertEqual( ctx.get(pykd.CV_REG_EDX), ctx.get(pykd.CV_AMD64_RDX) & 0xffffffff )
|
|
|
|
def testIsDumpAnalyzing( self ):
|
|
self.assertFalse( pykd.isDumpAnalyzing() )
|
|
|
|
def testExecutionStatus( self ):
|
|
self.assertEqual( pykd.DEBUG_STATUS_BREAK, pykd.getExecutionStatus() )
|
|
pykd.setExecutionStatus( pykd.DEBUG_STATUS_GO )
|
|
pykd.waitForEvent()
|
|
self.assertEqual( pykd.DEBUG_STATUS_BREAK, pykd.getExecutionStatus() )
|
|
|
|
def testPdbFile( self ):
|
|
self.assertNotEqual( '', pykd.getPdbFile( target.module.begin() ) )
|
|
|
|
def testProcessorMode( self ):
|
|
self.assertNotEqual( '', pykd.getProcessorMode() )
|
|
self.assertNotEqual( '', pykd.getProcessorType() )
|
|
|
|
def testThreadList( self ):
|
|
self.assertNotEqual( 0, len(pykd.getThreadList()) )
|
|
|
|
def testSymbolsPath( self ):
|
|
self.assertNotEqual( '', pykd.symbolsPath() )
|