@@ -568,6 +568,21 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
568
568
< span class ="w "> </ span > < span class ="sd "> """Whether the process is running."""</ span >
569
569
< span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> running</ span >
570
570
571
+ < span class ="nd "> @property</ span >
572
+ < span class ="k "> def</ span > < span class ="nf "> saved_ip</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
573
+ < span class ="w "> </ span > < span class ="sd "> """The return address of the current function."""</ span >
574
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> _ensure_process_stopped</ span > < span class ="p "> ()</ span >
575
+ < span class ="n "> stack_unwinder</ span > < span class ="o "> =</ span > < span class ="n "> stack_unwinding_provider</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> arch</ span > < span class ="p "> )</ span >
576
+
577
+ < span class ="k "> try</ span > < span class ="p "> :</ span >
578
+ < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> stack_unwinder</ span > < span class ="o "> .</ span > < span class ="n "> get_return_address</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> maps</ span > < span class ="p "> )</ span >
579
+ < span class ="k "> except</ span > < span class ="p "> (</ span > < span class ="ne "> OSError</ span > < span class ="p "> ,</ span > < span class ="ne "> ValueError</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
580
+ < span class ="k "> raise</ span > < span class ="ne "> ValueError</ span > < span class ="p "> (</ span >
581
+ < span class ="s2 "> "Failed to get the return address. Check stack frame registers (e.g., base pointer)."</ span > < span class ="p "> ,</ span >
582
+ < span class ="p "> )</ span > < span class ="kn "> from</ span > < span class ="nn "> e</ span >
583
+
584
+ < span class ="k "> return</ span > < span class ="n "> return_address</ span >
585
+
571
586
< span class ="nd "> @property</ span >
572
587
< span class ="k "> def</ span > < span class ="nf "> exit_code</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="o "> |</ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
573
588
< span class ="w "> </ span > < span class ="sd "> """The thread's exit code."""</ span >
@@ -612,6 +627,11 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
612
627
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _signal_number</ span > < span class ="o "> =</ span > < span class ="n "> signal</ span >
613
628
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> resume_context</ span > < span class ="o "> .</ span > < span class ="n "> threads_with_signals_to_forward</ span > < span class ="o "> .</ span > < span class ="n "> append</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> thread_id</ span > < span class ="p "> )</ span >
614
629
630
+ < span class ="nd "> @property</ span >
631
+ < span class ="k "> def</ span > < span class ="nf "> signal_number</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
632
+ < span class ="w "> </ span > < span class ="sd "> """The signal number to forward to the thread."""</ span >
633
+ < span class ="k "> return</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _signal_number</ span >
634
+
615
635
< div class ="viewcode-block " id ="ThreadContext.backtrace ">
616
636
< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.backtrace "> [docs]</ a >
617
637
< span class ="k "> def</ span > < span class ="nf "> backtrace</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> ,</ span > < span class ="n "> as_symbols</ span > < span class ="p "> :</ span > < span class ="nb "> bool</ span > < span class ="o "> =</ span > < span class ="kc "> False</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> list</ span > < span class ="p "> :</ span >
@@ -629,10 +649,10 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
629
649
< span class ="k "> return</ span > < span class ="n "> backtrace</ span > </ div >
630
650
631
651
632
- < div class ="viewcode-block " id ="ThreadContext.print_backtrace ">
633
- < a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.print_backtrace "> [docs]</ a >
634
- < span class ="k "> def</ span > < span class ="nf "> print_backtrace </ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
635
- < span class ="w "> </ span > < span class ="sd "> """Prints the current backtrace of the thread."""</ span >
652
+ < div class ="viewcode-block " id ="ThreadContext.pprint_backtrace ">
653
+ < a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.pprint_backtrace "> [docs]</ a >
654
+ < span class ="k "> def</ span > < span class ="nf "> pprint_backtrace </ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
655
+ < span class ="w "> </ span > < span class ="sd "> """Pretty prints the current backtrace of the thread."""</ span >
636
656
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> _ensure_process_stopped</ span > < span class ="p "> ()</ span >
637
657
< span class ="n "> stack_unwinder</ span > < span class ="o "> =</ span > < span class ="n "> stack_unwinding_provider</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> arch</ span > < span class ="p "> )</ span >
638
658
< span class ="n "> backtrace</ span > < span class ="o "> =</ span > < span class ="n "> stack_unwinder</ span > < span class ="o "> .</ span > < span class ="n "> unwind</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> )</ span >
@@ -675,7 +695,10 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
675
695
< div class ="viewcode-block " id ="ThreadContext.pprint_regs ">
676
696
< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.pprint_regs "> [docs]</ a >
677
697
< span class ="k "> def</ span > < span class ="nf "> pprint_regs</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
678
- < span class ="w "> </ span > < span class ="sd "> """Alias for the `pprint_registers` method."""</ span >
698
+ < span class ="w "> </ span > < span class ="sd "> """Alias for the `pprint_registers` method.</ span >
699
+
700
+ < span class ="sd "> Pretty prints the thread's registers.</ span >
701
+ < span class ="sd "> """</ span >
679
702
< span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> pprint_registers</ span > < span class ="p "> ()</ span > </ div >
680
703
681
704
@@ -698,24 +721,12 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
698
721
< div class ="viewcode-block " id ="ThreadContext.pprint_regs_all ">
699
722
< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.pprint_regs_all "> [docs]</ a >
700
723
< span class ="k "> def</ span > < span class ="nf "> pprint_regs_all</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
701
- < span class ="w "> </ span > < span class ="sd "> """Alias for the `pprint_registers_all` method."""</ span >
702
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> pprint_registers_all</ span > < span class ="p "> ()</ span > </ div >
703
-
704
-
705
- < span class ="nd "> @property</ span >
706
- < span class ="k "> def</ span > < span class ="nf "> saved_ip</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> :</ span > < span class ="n "> ThreadContext</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
707
- < span class ="w "> </ span > < span class ="sd "> """The return address of the current function."""</ span >
708
- < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> _ensure_process_stopped</ span > < span class ="p "> ()</ span >
709
- < span class ="n "> stack_unwinder</ span > < span class ="o "> =</ span > < span class ="n "> stack_unwinding_provider</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> arch</ span > < span class ="p "> )</ span >
724
+ < span class ="w "> </ span > < span class ="sd "> """Alias for the `pprint_registers_all` method.</ span >
710
725
711
- < span class ="k "> try</ span > < span class ="p "> :</ span >
712
- < span class ="n "> return_address</ span > < span class ="o "> =</ span > < span class ="n "> stack_unwinder</ span > < span class ="o "> .</ span > < span class ="n "> get_return_address</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> maps</ span > < span class ="p "> )</ span >
713
- < span class ="k "> except</ span > < span class ="p "> (</ span > < span class ="ne "> OSError</ span > < span class ="p "> ,</ span > < span class ="ne "> ValueError</ span > < span class ="p "> )</ span > < span class ="k "> as</ span > < span class ="n "> e</ span > < span class ="p "> :</ span >
714
- < span class ="k "> raise</ span > < span class ="ne "> ValueError</ span > < span class ="p "> (</ span >
715
- < span class ="s2 "> "Failed to get the return address. Check stack frame registers (e.g., base pointer)."</ span > < span class ="p "> ,</ span >
716
- < span class ="p "> )</ span > < span class ="kn "> from</ span > < span class ="nn "> e</ span >
726
+ < span class ="sd "> Pretty prints all the thread's registers.</ span >
727
+ < span class ="sd "> """</ span >
728
+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> pprint_registers_all</ span > < span class ="p "> ()</ span > </ div >
717
729
718
- < span class ="k "> return</ span > < span class ="n "> return_address</ span >
719
730
720
731
< div class ="viewcode-block " id ="ThreadContext.step ">
721
732
< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.step "> [docs]</ a >
0 commit comments