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")