1# Copyright (C) 2015-2017 Free Software Foundation, Inc. 2 3# This program is free software; you can redistribute it and/or modify 4# it under the terms of the GNU General Public License as published by 5# the Free Software Foundation; either version 3 of the License, or 6# (at your option) any later version. 7# 8# This program is distributed in the hope that it will be useful, 9# but WITHOUT ANY WARRANTY; without even the implied warranty of 10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11# GNU General Public License for more details. 12# 13# You should have received a copy of the GNU General Public License 14# along with this program. If not, see <http://www.gnu.org/licenses/>. 15 16import gdb 17 18def safe_execute(command): 19 """Execute command, ignoring any gdb errors.""" 20 result = None 21 try: 22 result = gdb.execute(command, to_string=True) 23 except gdb.error: 24 pass 25 return result 26 27 28def convert_spaces(file_name): 29 """Return file_name with all spaces replaced with "-".""" 30 return file_name.replace(" ", "-") 31 32 33def select_file(file_name): 34 """Select a file for debugging. 35 36 N.B. This turns confirmation off. 37 """ 38 safe_execute("set confirm off") 39 safe_execute("kill") 40 print ("Selecting file %s" % (file_name)) 41 if file_name is None: 42 gdb.execute("file") 43 else: 44 gdb.execute("file %s" % (file_name)) 45 46 47def runto(location): 48 """Run the program to location. 49 50 N.B. This turns confirmation off. 51 """ 52 safe_execute("set confirm off") 53 gdb.execute("tbreak %s" % (location)) 54 gdb.execute("run") 55 56 57def runto_main(): 58 """Run the program to "main". 59 60 N.B. This turns confirmation off. 61 """ 62 runto("main") 63 64 65def run_n_times(count, func): 66 """Execute func count times.""" 67 while count > 0: 68 func() 69 count -= 1 70