pykd

Форк
0
/
ehsymbolstest.py 
45 строк · 1.6 Кб
1
"""Execution symbols state event test"""
2

3
import unittest
4
import target
5
import pykd
6
import testutils
7

8
class SymbolsStateHandler(pykd.eventHandler):
9
    def __init__(self, modBase):
10
        pykd.eventHandler.__init__(self)
11
        self._modBase = modBase
12
        self.modNames = set()
13
        self.unloadModuleTrigged = False
14
        self.unloadAllModulesTrigged = False
15

16
    def onSymbolsLoaded(self, modBase):
17
        if modBase:
18
            self.modNames.add( pykd.module(modBase).name() )
19

20
    def onSymbolsUnloaded(self, modBase):
21
        if not modBase:
22
            self.unloadAllModulesTrigged = True
23
        elif self._modBase == modBase:
24
            self.unloadModuleTrigged = True
25

26
class EhSymbolsTest(unittest.TestCase):
27
    """Execution symbols state event test"""
28

29
    def testChangeSymbolsState(self):
30
        """Start new process and track change symbols exception"""
31
        _locProcessId = pykd.startProcess( target.appPath + " -testLoadUnload" )
32
        with testutils.ContextCallIt( testutils.KillProcess(_locProcessId) ) as killStartedProcess:
33

34
            mod = pykd.module("targetapp")
35
            symbolsStateHandler = SymbolsStateHandler( mod.begin() )
36

37
            pykd.dbgCommand(".reload /u targetapp.exe")
38
            self.assertTrue( symbolsStateHandler.unloadModuleTrigged )
39

40
            pykd.dbgCommand(".reload /u")
41
            self.assertTrue( symbolsStateHandler.unloadAllModulesTrigged )
42

43
            self.assertRaises(pykd.WaitEventException, testutils.infGo)
44

45
            self.assertTrue( "iphlpapi" in symbolsStateHandler.modNames )
46

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.