48 lines · python
1import lldb2import unittest3from lldbsuite.test.lldbtest import *4from lldbsuite.test.decorators import *5from lldbsuite.test.gdbclientutils import *6from lldbsuite.test.lldbgdbclient import GDBRemoteTestBase7 8 9class TestMultiprocess(GDBRemoteTestBase):10 def test_qfThreadInfo(self):11 class MyResponder(MockGDBServerResponder):12 def qfThreadInfo(self):13 return "mp400.10200,p400.10204,p401.10300,p400.10208"14 15 self.server.responder = MyResponder()16 target = self.dbg.CreateTarget("")17 if self.TraceOn():18 self.runCmd("log enable gdb-remote packets")19 self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets"))20 process = self.connect(target)21 self.assertEqual(process.id, 0x400)22 self.assertEqual(23 [process.threads[i].id for i in range(process.num_threads)],24 [0x10200, 0x10204, 0x10208],25 )26 27 def test_stop_reason(self):28 class MyResponder(MockGDBServerResponder):29 def qfThreadInfo(self):30 return "mp400.10200,p400.10204"31 32 def cont(self):33 return "S02thread:p400.10200;"34 35 self.server.responder = MyResponder()36 target = self.dbg.CreateTarget("")37 if self.TraceOn():38 self.runCmd("log enable gdb-remote packets")39 self.addTearDownHook(lambda: self.runCmd("log disable gdb-remote packets"))40 process = self.connect(target)41 process.Continue()42 self.assertEqual(43 process.GetThreadByID(0x10200).stop_reason, lldb.eStopReasonSignal44 )45 self.assertEqual(46 process.GetThreadByID(0x10204).stop_reason, lldb.eStopReasonNone47 )48