summaryrefslogtreecommitdiff
path: root/python/scriptingprovider.py
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2025-08-01 17:02:14 -0400
committerRusty Wagner <rusty.wagner@gmail.com>2025-08-01 20:56:33 -0400
commit15c635b873105eda2861430d062ea3f6bdfe9d9b (patch)
treef5b17f7aa1388660992e233b3711654aad0cfb0c /python/scriptingprovider.py
parent24fef31b14b89198185e5edc39ab7e6a7ef2e9ba (diff)
Use log_error_for_exception in the Python API to pass tracebacks in the stack trace associated with log messages, instead of creating large mutli-line messages for every exception
Diffstat (limited to 'python/scriptingprovider.py')
-rw-r--r--python/scriptingprovider.py40
1 files changed, 20 insertions, 20 deletions
diff --git a/python/scriptingprovider.py b/python/scriptingprovider.py
index 3b7747bb..41b7d8d7 100644
--- a/python/scriptingprovider.py
+++ b/python/scriptingprovider.py
@@ -98,26 +98,26 @@ class ScriptingOutputListener:
try:
self.notify_output(text)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingOutputListener._output")
def _warning(self, ctxt, text):
try:
self.notify_warning(text)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingOutputListener._warning")
def _error(self, ctxt, text):
try:
self.notify_error(text)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingOutputListener._error")
def _input_ready_state_changed(self, ctxt, state):
try:
self.notify_input_ready_state_changed(state)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingOutputListener._input_ready_state_changed")
def notify_output(self, text):
pass
@@ -167,40 +167,40 @@ class ScriptingInstance:
try:
self.__class__._registered_instances.append(self)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._external_ref_taken")
def _external_ref_released(self, ctxt):
try:
self.__class__._registered_instances.remove(self)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._external_ref_released")
def _execute_script_input(self, ctxt, text):
try:
return self.perform_execute_script_input(text)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._execute_script_input")
return ScriptingProviderExecuteResult.InvalidScriptInput
def _execute_script_input_from_filename(self, ctxt, filename):
try:
return self.perform_execute_script_input_from_filename(filename)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._execute_script_input_from_filename")
return ScriptingProviderExecuteResult.InvalidScriptInput
def _cancel_script_input(self, ctxt):
try:
return self.perform_cancel_script_input()
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._cancel_script_input")
return ScriptingProviderExecuteResult.ScriptExecutionCancelled
def _release_binary_view(self, ctxt, view):
try:
binaryview.BinaryView._cache_remove(view)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._release_binary_view")
def _set_current_binary_view(self, ctxt, view):
try:
@@ -211,7 +211,7 @@ class ScriptingInstance:
view = None
self.perform_set_current_binary_view(view)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._set_current_binary_view")
def _set_current_function(self, ctxt, func):
try:
@@ -221,7 +221,7 @@ class ScriptingInstance:
func = None
self.perform_set_current_function(func)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._set_current_function")
def _set_current_basic_block(self, ctxt, block):
try:
@@ -240,19 +240,19 @@ class ScriptingInstance:
block = None
self.perform_set_current_basic_block(block)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._set_current_basic_block")
def _set_current_address(self, ctxt, addr):
try:
self.perform_set_current_address(addr)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._set_current_address")
def _set_current_selection(self, ctxt, begin, end):
try:
self.perform_set_current_selection(begin, end)
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._set_current_selection")
def _complete_input(self, ctxt, text, state):
try:
@@ -260,14 +260,14 @@ class ScriptingInstance:
text = text.decode("utf-8")
return core.BNAllocString(self.perform_complete_input(text, state))
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._complete_input")
return core.BNAllocString("")
def _stop(self, ctxt):
try:
self.perform_stop()
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingInstance._stop")
@abc.abstractmethod
def perform_execute_script_input(self, text):
@@ -431,7 +431,7 @@ class ScriptingProvider(metaclass=_ScriptingProviderMetaclass):
assert script_instance is not None, "core.BNNewScriptingInstanceReference returned None"
return ctypes.cast(script_instance, ctypes.c_void_p).value
except:
- logger.log_error(traceback.format_exc())
+ logger.log_error_for_exception("Unhandled Python exception in ScriptingProvider._create_instance")
return None
def create_instance(self) -> Optional[ScriptingInstance]:
@@ -1101,9 +1101,9 @@ class PythonScriptingProvider(ScriptingProvider):
__import__(module)
return True
except KeyError:
- logger.log_error(f"Failed to find python plugin: {repo_path}/{module}")
+ logger.log_error_for_exception(f"Failed to find python plugin: {repo_path}/{module}")
except ImportError as ie:
- logger.log_error(f"Failed to import python plugin: {repo_path}/{module}: {ie}")
+ logger.log_error_for_exception(f"Failed to import python plugin: {repo_path}/{module}: {ie}")
except binaryninja.UIPluginInHeadlessError:
logger.log_info(f"Ignored python UI plugin: {repo_path}/{module}")
return False