mirror of
https://github.com/ivellioscolin/pykd.git
synced 2025-04-21 04:13:22 +08:00
[0.3.x] restored tests of synthetic symbols
git-svn-id: https://pykd.svn.codeplex.com/svn@90487 9b283d60-5439-405e-af05-b73fd8c4d996
This commit is contained in:
parent
b8828155e0
commit
4caa408721
@ -6,22 +6,22 @@
|
|||||||
BOOL APIENTRY DllMain( HMODULE hModule,
|
BOOL APIENTRY DllMain( HMODULE hModule,
|
||||||
DWORD ul_reason_for_call,
|
DWORD ul_reason_for_call,
|
||||||
LPVOID lpReserved
|
LPVOID lpReserved
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
switch (ul_reason_for_call)
|
switch (ul_reason_for_call)
|
||||||
{
|
{
|
||||||
case DLL_PROCESS_ATTACH:
|
case DLL_PROCESS_ATTACH:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_THREAD_ATTACH:
|
case DLL_THREAD_ATTACH:
|
||||||
case DLL_THREAD_DETACH:
|
case DLL_THREAD_DETACH:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case DLL_PROCESS_DETACH:
|
case DLL_PROCESS_DETACH:
|
||||||
int a;
|
volatile int a;
|
||||||
a = 10;
|
a = 10;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@ import mspdbtest
|
|||||||
import excepttest
|
import excepttest
|
||||||
import targetprocess
|
import targetprocess
|
||||||
import ehloadtest
|
import ehloadtest
|
||||||
|
import synsymtest
|
||||||
|
|
||||||
pykd.initialize()
|
pykd.initialize()
|
||||||
|
|
||||||
@ -55,6 +56,7 @@ def getTestSuite( singleName = "" ):
|
|||||||
unittest.TestLoader().loadTestsFromTestCase( typedvar.TypedVarTest ),
|
unittest.TestLoader().loadTestsFromTestCase( typedvar.TypedVarTest ),
|
||||||
#unittest.TestLoader().loadTestsFromTestCase( regtest.CpuRegTest ),
|
#unittest.TestLoader().loadTestsFromTestCase( regtest.CpuRegTest ),
|
||||||
unittest.TestLoader().loadTestsFromTestCase( customtypestest.CustomTypesTest ),
|
unittest.TestLoader().loadTestsFromTestCase( customtypestest.CustomTypesTest ),
|
||||||
|
unittest.TestLoader().loadTestsFromTestCase( synsymtest.SynSymTest ),
|
||||||
# ^^^
|
# ^^^
|
||||||
unittest.TestLoader().loadTestsFromTestCase( TerminateProcessTest ),
|
unittest.TestLoader().loadTestsFromTestCase( TerminateProcessTest ),
|
||||||
|
|
||||||
@ -83,5 +85,5 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
unittest.TextTestRunner(stream=sys.stdout, verbosity=2).run( getTestSuite() )
|
||||||
|
|
||||||
#raw_input("Press <ENTER>...")
|
# raw_input("Press <ENTER>...")
|
||||||
|
|
||||||
|
@ -9,73 +9,22 @@ class SynSymTest(unittest.TestCase):
|
|||||||
|
|
||||||
def testAdd(self):
|
def testAdd(self):
|
||||||
"""Add new synthetic symbol"""
|
"""Add new synthetic symbol"""
|
||||||
pykd.addSynSymbol(
|
_addr = target.module.offset("FuncTestClass::staticMethod") - 1
|
||||||
target.module.offset("FuncWithName0")-1, 1, "synSym1")
|
|
||||||
self.assertEqual(
|
pykd.addSyntheticSymbol(_addr, 1, "synSym1")
|
||||||
target.module.offset("FuncWithName0")-1,
|
self.assertEqual(target.module.synSym1, _addr)
|
||||||
target.module.offset("synSym1"))
|
|
||||||
|
self.assertRaises( pykd.DbgException, pykd.addSyntheticSymbol, _addr, 1, "synSym1" )
|
||||||
|
|
||||||
def testDel(self):
|
def testDel(self):
|
||||||
"""Remove synthetic symbol"""
|
"""Remove synthetic symbol"""
|
||||||
pykd.addSynSymbol(
|
_addr = target.module.offset("FuncTestClass::staticMethod") - 2
|
||||||
target.module.offset("FuncWithName0")-2, 1, "synSym2")
|
|
||||||
self.assertEqual(
|
|
||||||
pykd.delSynSymbol( target.module.offset("synSym2") ), 1 )
|
|
||||||
|
|
||||||
exceptionOccurred = True
|
_synsym = pykd.addSyntheticSymbol(_addr, 1, "synSym2")
|
||||||
try:
|
self.assertEqual(target.module.synSym2, _addr)
|
||||||
target.module.rva("synSym2")
|
|
||||||
exceptionOccurred = False
|
|
||||||
except pykd.BaseException:
|
|
||||||
pass
|
|
||||||
self.assertTrue(exceptionOccurred)
|
|
||||||
|
|
||||||
def testDelAll(self):
|
pykd.removeSyntheticSymbol(_synsym)
|
||||||
"""Remove all synthetic symbols"""
|
|
||||||
pykd.addSynSymbol(
|
|
||||||
target.module.offset("FuncWithName0")-3, 1, "synSym3")
|
|
||||||
pykd.delAllSynSymbols()
|
|
||||||
|
|
||||||
exceptionOccurred = True
|
self.assertRaises( pykd.DbgException, target.module.offset, "synSym2" )
|
||||||
try:
|
|
||||||
target.module.rva("synSym3")
|
|
||||||
exceptionOccurred = False
|
|
||||||
except pykd.BaseException:
|
|
||||||
pass
|
|
||||||
self.assertTrue(exceptionOccurred)
|
|
||||||
|
|
||||||
def testDelByMask(self):
|
self.assertRaises( pykd.DbgException, pykd.removeSyntheticSymbol, _synsym )
|
||||||
"""Remove synthetic symbol by mask"""
|
|
||||||
pykd.addSynSymbol(
|
|
||||||
target.module.offset("FuncWithName0")-4, 1, "synSym4")
|
|
||||||
self.assertTrue( pykd.delSynSymbolsMask( "*", "synSym4" ) >= 1 )
|
|
||||||
|
|
||||||
exceptionOccurred = True
|
|
||||||
try:
|
|
||||||
target.module.rva("synSym4")
|
|
||||||
exceptionOccurred = False
|
|
||||||
except pykd.BaseException:
|
|
||||||
pass
|
|
||||||
self.assertTrue(exceptionOccurred)
|
|
||||||
|
|
||||||
def testReload(self):
|
|
||||||
"""Restore synthetic symbols after reload module symbols"""
|
|
||||||
pykd.addSynSymbol(
|
|
||||||
target.module.offset("FuncWithName0")-5, 1, "synSym5")
|
|
||||||
target.module.reload()
|
|
||||||
self.assertEqual(
|
|
||||||
target.module.offset("FuncWithName0")-5,
|
|
||||||
target.module.offset("synSym5"))
|
|
||||||
|
|
||||||
def testAddSynSymbolException(self):
|
|
||||||
"""Test of AddSynSymbolException"""
|
|
||||||
pykd.addSynSymbol(
|
|
||||||
target.module.offset("FuncWithName0")-6, 1, "synSym6")
|
|
||||||
|
|
||||||
exceptionOccurred = False
|
|
||||||
try:
|
|
||||||
pykd.addSynSymbol(
|
|
||||||
target.module.offset("FuncWithName0")-6, 1, "synSym7")
|
|
||||||
except pykd.AddSynSymbolException:
|
|
||||||
exceptionOccurred = True
|
|
||||||
self.assertTrue(exceptionOccurred)
|
|
||||||
|
Loading…
Reference in New Issue
Block a user