1""" 2Test lldb-vscode coreFile attaching 3""" 4 5 6import unittest2 7import vscode 8from lldbsuite.test.decorators import * 9from lldbsuite.test.lldbtest import * 10from lldbsuite.test import lldbutil 11import lldbvscode_testcase 12import os 13 14 15class TestVSCode_coreFile(lldbvscode_testcase.VSCodeTestCaseBase): 16 17 @skipIfWindows 18 @skipIfRemote 19 @skipIfLLVMTargetMissing("X86") 20 def test_core_file(self): 21 current_dir = os.path.dirname(os.path.realpath(__file__)) 22 exe_file = os.path.join(current_dir, "linux-x86_64.out") 23 core_file = os.path.join(current_dir, "linux-x86_64.core") 24 25 self.create_debug_adaptor() 26 self.attach(exe_file, coreFile=core_file) 27 28 expected_frames = [ 29 {'column': 0, 'id': 524288, 'line': 4, 'name': 'bar', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}}, 30 {'column': 0, 'id': 524289, 'line': 10, 'name': 'foo', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}}, 31 {'column': 0, 'id': 524290, 'line': 16, 'name': '_start', 'source': {'name': 'main.c', 'path': '/home/labath/test/main.c'}}, 32 ] 33 34 self.assertEquals(self.get_stackFrames(), expected_frames) 35 36 # Resuming should have no effect and keep the process stopped 37 self.continue_to_next_stop() 38 self.assertEquals(self.get_stackFrames(), expected_frames) 39 40 self.vscode.request_next(threadId=32259) 41 self.assertEquals(self.get_stackFrames(), expected_frames) 42 43 @skipIfWindows 44 @skipIfRemote 45 @skipIfLLVMTargetMissing("X86") 46 def test_core_file_source_mapping(self): 47 ''' Test that sourceMap property is correctly applied when loading a core ''' 48 current_dir = os.path.dirname(os.path.realpath(__file__)) 49 exe_file = os.path.join(current_dir, "linux-x86_64.out") 50 core_file = os.path.join(current_dir, "linux-x86_64.core") 51 52 self.create_debug_adaptor() 53 54 source_map = [["/home/labath/test", current_dir]] 55 self.attach(exe_file, coreFile=core_file, sourceMap=source_map) 56 57 self.assertTrue(current_dir in self.get_stackFrames()[0]['source']['path']) 58