hilda 2.0.12__tar.gz → 2.0.13__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {hilda-2.0.12 → hilda-2.0.13}/PKG-INFO +1 -1
- {hilda-2.0.12 → hilda-2.0.13}/hilda/_version.py +2 -2
- {hilda-2.0.12 → hilda-2.0.13}/hilda/hilda_client.py +28 -9
- {hilda-2.0.12 → hilda-2.0.13}/hilda/symbol.py +2 -2
- {hilda-2.0.12 → hilda-2.0.13}/hilda.egg-info/PKG-INFO +1 -1
- {hilda-2.0.12 → hilda-2.0.13}/.github/workflows/python-app.yml +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/.github/workflows/python-publish.yml +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/.gitignore +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/.pre-commit-config.yaml +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/LICENSE +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/README.md +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/gifs/.gitattributes +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/gifs/ui.png +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/gifs/xpc_print_message.gif +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/__init__.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/__main__.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/cli.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/common.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/exceptions.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/hilda_ascii_art.html +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/ipython_extensions/events.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/ipython_extensions/keybindings.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/ipython_extensions/magics.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/launch_lldb.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/lldb_entrypoint.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/lldb_importer.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c/from_ns_to_json.m +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c/get_objectivec_class_by_module.m +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c/get_objectivec_class_description.m +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c/get_objectivec_symbol_data.m +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c/lsof.m +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c/to_ns_from_json.m +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c_class.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/objective_c_symbol.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/registers.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/__init__.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/boringssl.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/collections.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/dyld.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/fs_utils.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/mach/CFRunLoopServiceMachPort_hooks.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/mach/__init__.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/macho/__init__.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/macho/all_image_infos.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/macho/apple_version.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/macho/image_info.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/macho/macho.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/macho/macho_load_commands.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/remotepairingd.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/syslog.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/uuid.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/snippets/xpc.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/symbols_jar.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/ui/colors.json +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/ui/ui_manager.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda/ui/views.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda.egg-info/SOURCES.txt +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda.egg-info/dependency_links.txt +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda.egg-info/entry_points.txt +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda.egg-info/requires.txt +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/hilda.egg-info/top_level.txt +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/pyproject.toml +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/requirements.txt +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/setup.cfg +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/__init__.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/conftest.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_hilda_client/test_from_ns.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_hilda_client/test_hilda_client.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_hilda_client/test_monitor.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_hilda_client/test_ns.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_hilda_client/test_rebind_symbols.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_hilda_client/test_registers.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_snippets/test_xpc.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_symbols/test_objective_c_class.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_symbols/test_objective_c_symbol.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_symbols/test_symbol.py +0 -0
- {hilda-2.0.12 → hilda-2.0.13}/tests/test_symbols/test_symbols_jar.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hilda
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.13
|
|
4
4
|
Summary: LLDB wrapped and empowered by iPython's features
|
|
5
5
|
Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
|
|
6
6
|
Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
|
|
@@ -125,9 +125,29 @@ def stop_is_needed(func: Callable):
|
|
|
125
125
|
return wrapper
|
|
126
126
|
|
|
127
127
|
|
|
128
|
-
class
|
|
129
|
-
|
|
128
|
+
class HildaBreakpoint:
|
|
129
|
+
def __init__(self, hilda_client: 'HildaClient', lldb_breakpoint: lldb.SBBreakpoint,
|
|
130
|
+
address: Union[str, int], forced: bool = False, options: Optional[typing.Mapping] = None,
|
|
131
|
+
callback: Optional[Callable] = None) -> None:
|
|
132
|
+
self._hilda_client = hilda_client
|
|
133
|
+
self.address = address
|
|
134
|
+
self.forced = forced
|
|
135
|
+
self.options = options
|
|
136
|
+
self.callback = callback
|
|
137
|
+
self.lldb_breakpoint = lldb_breakpoint
|
|
138
|
+
|
|
139
|
+
def __repr__(self) -> str:
|
|
140
|
+
return (f'<{self.__class__.__name__} LLDB:{self.lldb_breakpoint} FORCED:{self.forced} OPTIONS:{self.options} '
|
|
141
|
+
f'CALLBACK:{self.callback}>')
|
|
142
|
+
|
|
143
|
+
def __str__(self) -> str:
|
|
144
|
+
return repr(self)
|
|
130
145
|
|
|
146
|
+
def remove(self) -> None:
|
|
147
|
+
self._hilda_client.remove_hilda_breakpoint(self.lldb_breakpoint.id)
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
class HildaClient:
|
|
131
151
|
RETVAL_BIT_COUNT = 64
|
|
132
152
|
|
|
133
153
|
def __init__(self, debugger: lldb.SBDebugger):
|
|
@@ -473,7 +493,7 @@ class HildaClient:
|
|
|
473
493
|
with self.stopped():
|
|
474
494
|
return self.evaluate_expression(call_expression)
|
|
475
495
|
|
|
476
|
-
def monitor(self, address, condition: str = None, **options) ->
|
|
496
|
+
def monitor(self, address, condition: str = None, **options) -> HildaBreakpoint:
|
|
477
497
|
"""
|
|
478
498
|
Monitor every time a given address is called
|
|
479
499
|
|
|
@@ -613,7 +633,7 @@ class HildaClient:
|
|
|
613
633
|
if remove_forced or not bp.forced:
|
|
614
634
|
self.remove_hilda_breakpoint(bp_id)
|
|
615
635
|
|
|
616
|
-
def remove_hilda_breakpoint(self, bp_id):
|
|
636
|
+
def remove_hilda_breakpoint(self, bp_id: int) -> None:
|
|
617
637
|
"""
|
|
618
638
|
Remove a single breakpoint placed by Hilda
|
|
619
639
|
:param bp_id: Breakpoint's ID
|
|
@@ -647,7 +667,7 @@ class HildaClient:
|
|
|
647
667
|
print(highlight(entitlements, XmlLexer(), TerminalTrueColorFormatter()))
|
|
648
668
|
|
|
649
669
|
def bp(self, address_or_name: Union[int, str], callback: Optional[Callable] = None, condition: str = None,
|
|
650
|
-
forced=False, module_name: Optional[str] = None, **options) ->
|
|
670
|
+
forced=False, module_name: Optional[str] = None, **options) -> HildaBreakpoint:
|
|
651
671
|
"""
|
|
652
672
|
Add a breakpoint
|
|
653
673
|
:param address_or_name:
|
|
@@ -676,15 +696,14 @@ class HildaClient:
|
|
|
676
696
|
bp.SetCondition(condition)
|
|
677
697
|
|
|
678
698
|
# add into Hilda's internal list of breakpoints
|
|
679
|
-
self.breakpoints[bp.id] =
|
|
680
|
-
|
|
681
|
-
)
|
|
699
|
+
self.breakpoints[bp.id] = HildaBreakpoint(self, bp, address=address_or_name, forced=forced, options=options,
|
|
700
|
+
callback=callback)
|
|
682
701
|
|
|
683
702
|
if callback is not None:
|
|
684
703
|
bp.SetScriptCallbackFunction('lldb.hilda_client.bp_callback_router')
|
|
685
704
|
|
|
686
705
|
self.log_info(f'Breakpoint #{bp.id} has been set')
|
|
687
|
-
return bp
|
|
706
|
+
return self.breakpoints[bp.id]
|
|
688
707
|
|
|
689
708
|
def bp_callback_router(self, frame, bp_loc, *_):
|
|
690
709
|
"""
|
|
@@ -139,10 +139,10 @@ class Symbol(int):
|
|
|
139
139
|
def peek_str(self) -> str:
|
|
140
140
|
return self._client.peek_str(self)
|
|
141
141
|
|
|
142
|
-
def monitor(self, **args)
|
|
142
|
+
def monitor(self, **args):
|
|
143
143
|
return self._client.monitor(self, **args)
|
|
144
144
|
|
|
145
|
-
def bp(self, callback=None, **args)
|
|
145
|
+
def bp(self, callback=None, **args):
|
|
146
146
|
return self._client.bp(self, callback, **args)
|
|
147
147
|
|
|
148
148
|
def disass(self, size, **args) -> lldb.SBInstructionList:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: hilda
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.13
|
|
4
4
|
Summary: LLDB wrapped and empowered by iPython's features
|
|
5
5
|
Author-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
|
|
6
6
|
Maintainer-email: doronz88 <doron88@gmail.com>, matan <matan1008@gmail.com>, netanel cohen <netanelc305@protonmail.com>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|