@@ -568,6 +568,21 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
568568< span class ="w "> </ span > < span class ="sd "> """Whether the process is running."""</ span >
569569 < 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 >
570570
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+
571586 < span class ="nd "> @property</ span >
572587 < 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 >
573588< 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
612627 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _signal_number</ span > < span class ="o "> =</ span > < span class ="n "> signal</ span >
613628 < 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 >
614629
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+
615635< div class ="viewcode-block " id ="ThreadContext.backtrace ">
616636< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.backtrace "> [docs]</ a >
617637 < 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
629649 < span class ="k "> return</ span > < span class ="n "> backtrace</ span > </ div >
630650
631651
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 >
636656 < 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 >
637657 < 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 >
638658 < 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
675695< div class ="viewcode-block " id ="ThreadContext.pprint_regs ">
676696< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.pprint_regs "> [docs]</ a >
677697 < 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 >
679702 < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> pprint_registers</ span > < span class ="p "> ()</ span > </ div >
680703
681704
@@ -698,24 +721,12 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
698721< div class ="viewcode-block " id ="ThreadContext.pprint_regs_all ">
699722< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.pprint_regs_all "> [docs]</ a >
700723 < 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 >
710725
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 >
717729
718- < span class ="k "> return</ span > < span class ="n "> return_address</ span >
719730
720731< div class ="viewcode-block " id ="ThreadContext.step ">
721732< a class ="viewcode-back " href ="../../../libdebug.state.html#libdebug.state.thread_context.ThreadContext.step "> [docs]</ a >
0 commit comments