diff --git a/PINCE.py b/PINCE.py index 9d1585df..e13a67de 100755 --- a/PINCE.py +++ b/PINCE.py @@ -3214,6 +3214,12 @@ def on_process_stop(self): self.update_stacktrace() elif self.stackedWidget_StackScreens.currentWidget() == self.Stack: self.update_stack() + + # These tableWidgets are never emptied but initially both are empty, so this runs only once + if self.tableWidget_StackTrace.rowCount() == 0: + self.update_stacktrace() + if self.tableWidget_Stack.rowCount() == 0: + self.update_stack() self.refresh_hex_view() if bring_disassemble_to_front: self.showMaximized() @@ -4059,10 +4065,15 @@ def __init__(self, parent=None): def update_stacktrace(self): self.listWidget_ReturnAddresses.clear() + if GDB_Engine.inferior_status == type_defs.INFERIOR_STATUS.INFERIOR_RUNNING: + return return_addresses = GDB_Engine.get_stack_frame_return_addresses() self.listWidget_ReturnAddresses.addItems(return_addresses) def update_frame_info(self, index): + if GDB_Engine.inferior_status == type_defs.INFERIOR_STATUS.INFERIOR_RUNNING: + self.textBrowser_Info.setText(tr.PROCESS_RUNNING) + return frame_info = GDB_Engine.get_stack_frame_info(index) self.textBrowser_Info.setText(frame_info) diff --git a/i18n/ts/it_IT.ts b/i18n/ts/it_IT.ts index b1a996cc..28a04a82 100644 --- a/i18n/ts/it_IT.ts +++ b/i18n/ts/it_IT.ts @@ -1537,6 +1537,11 @@ To change the current GDB path, check Settings->Debug [stopped] + + + Process is running + + Enter the new value diff --git a/i18n/ts/zh_CN.ts b/i18n/ts/zh_CN.ts index ad3865f6..a31bd864 100644 --- a/i18n/ts/zh_CN.ts +++ b/i18n/ts/zh_CN.ts @@ -1541,6 +1541,11 @@ To change the current GDB path, check Settings->Debug [stopped] [已停止] + + + Process is running + + Enter the new value diff --git a/libpince/gdb_python_scripts/GDBCommandExtensions.py b/libpince/gdb_python_scripts/GDBCommandExtensions.py index 70a35b7b..697cef5d 100644 --- a/libpince/gdb_python_scripts/GDBCommandExtensions.py +++ b/libpince/gdb_python_scripts/GDBCommandExtensions.py @@ -137,7 +137,10 @@ def invoke(self, arg, from_tty): # +1 because frame numbers start from 0 for item in range(int(max_frame) + 1): - result = gdb.execute("info frame " + str(item), from_tty, to_string=True) + try: + result = gdb.execute(f"info frame {item}", from_tty, to_string=True) + except: + break frame_address = common_regexes.frame_address.search(result).group(1) difference = hex(int(frame_address, 16) - stack_pointer) frame_address_with_difference = frame_address + "(" + sp_register + "+" + difference + ")" @@ -215,7 +218,10 @@ def invoke(self, arg, from_tty): # +1 because frame numbers start from 0 for item in range(int(max_frame) + 1): - result = gdb.execute("info frame " + str(item), from_tty, to_string=True) + try: + result = gdb.execute(f"info frame {item}", from_tty, to_string=True) + except: + break return_address = common_regexes.return_address.search(result) if return_address: return_address_with_info = ScriptUtils.examine_expression(return_address.group(1)).all diff --git a/tr/tr.py b/tr/tr.py index a5e1522a..706eb75b 100644 --- a/tr/tr.py +++ b/tr/tr.py @@ -73,6 +73,7 @@ def translate(): NO_PROCESS_SELECTED = QT_TR_NOOP("No Process Selected") STATUS_DETACHED = QT_TR_NOOP("[detached]") STATUS_STOPPED = QT_TR_NOOP("[stopped]") + PROCESS_RUNNING = QT_TR_NOOP("Process is running") ENTER_VALUE = QT_TR_NOOP("Enter the new value") ENTER_DESCRIPTION = QT_TR_NOOP("Enter the new description") EDIT_ADDRESS = QT_TR_NOOP("Edit Address")