| # Copyright (C) 2016 The Android Open Source Project |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| '''Module that contains the class UtilLLDB, which provides lldb utility |
| methods.''' |
| |
| from __future__ import absolute_import |
| |
| from . import util_constants |
| |
| try: |
| import lldb |
| except ImportError: |
| print('unable to import lldb') |
| print('please run "lldb -P" and add to $PYTHONPATH') |
| quit(util_constants.RC_TEST_FATAL) |
| |
| |
| class UtilLLDB(object): |
| '''Provides utility methods to interface with lldb's python bindings.''' |
| |
| @staticmethod |
| def start(): |
| '''Initialise the lldb debugger framework.''' |
| lldb.SBDebugger_Initialize() |
| |
| @staticmethod |
| def stop(): |
| '''Terminate the lldb debugger framework. |
| |
| Raises: |
| AssertionError: If an assertion fails. |
| ''' |
| assert lldb |
| lldb.SBDebugger_Terminate() |
| |
| @staticmethod |
| def create_debugger(): |
| '''Create an lldb debugger instance. |
| |
| Returns: |
| The SBDebugger instance that was created. |
| |
| Raises: |
| AssertionError: If an assertion fails. |
| ''' |
| assert lldb |
| inst = lldb.SBDebugger_Create() |
| inst.SetAsync(False) |
| return inst |
| |
| @staticmethod |
| def destroy_debugger(dbg): |
| '''Destroy the lldb debugger instance. |
| |
| Args: |
| dbg: Instance of SBDebugger that is to be destroyed. |
| |
| Raises: |
| AssertionError: If an assertion fails. |
| ''' |
| assert lldb |
| lldb.SBDebugger_Destroy(dbg) |
| |
| @staticmethod |
| def get_module(): |
| '''Get the lldb module. |
| |
| Returns: |
| The lldb module. |
| |
| Raises: |
| AssertionError: If an assertion fails. |
| ''' |
| assert lldb |
| return lldb |