@@ -664,11 +664,23 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
664664 < 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 >
665665 < span class ="n "> maps</ span > < span class ="o "> =</ span > < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> _internal_debugger</ span > < span class ="o "> .</ span > < span class ="n "> debugging_interface</ span > < span class ="o "> .</ span > < span class ="n "> get_maps</ span > < span class ="p "> ()</ span >
666666 < span class ="k "> for</ span > < span class ="n "> return_address</ span > < span class ="ow "> in</ span > < span class ="n "> backtrace</ span > < span class ="p "> :</ span >
667- < span class ="n "> return_address_symbol</ span > < span class ="o "> =</ span > < span class ="n "> resolve_address_in_maps</ span > < span class ="p "> (</ span > < span class ="n "> return_address</ span > < span class ="p "> ,</ span > < span class ="n "> maps</ span > < span class ="p "> )</ span >
667+ < span class ="n "> filtered_maps</ span > < span class ="o "> =</ span > < span class ="n "> maps</ span > < span class ="o "> .</ span > < span class ="n "> filter</ span > < span class ="p "> (</ span > < span class ="n "> return_address</ span > < span class ="p "> )</ span >
668+ < span class ="n "> return_address_symbol</ span > < span class ="o "> =</ span > < span class ="n "> resolve_address_in_maps</ span > < span class ="p "> (</ span > < span class ="n "> return_address</ span > < span class ="p "> ,</ span > < span class ="n "> filtered_maps</ span > < span class ="p "> )</ span >
669+ < span class ="n "> permissions</ span > < span class ="o "> =</ span > < span class ="n "> filtered_maps</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span > < span class ="o "> .</ span > < span class ="n "> permissions</ span >
670+ < span class ="k "> if</ span > < span class ="s2 "> "rwx"</ span > < span class ="ow "> in</ span > < span class ="n "> permissions</ span > < span class ="p "> :</ span >
671+ < span class ="n "> style</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> UNDERLINE</ span > < span class ="si "> }{</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> RED</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
672+ < span class ="k "> elif</ span > < span class ="s2 "> "x"</ span > < span class ="ow "> in</ span > < span class ="n "> permissions</ span > < span class ="p "> :</ span >
673+ < span class ="n "> style</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> RED</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
674+ < span class ="k "> elif</ span > < span class ="s2 "> "w"</ span > < span class ="ow "> in</ span > < span class ="n "> permissions</ span > < span class ="p "> :</ span >
675+ < span class ="c1 "> # This should not happen, but it's here for completeness</ span >
676+ < span class ="n "> style</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> YELLOW</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
677+ < span class ="k "> elif</ span > < span class ="s2 "> "r"</ span > < span class ="ow "> in</ span > < span class ="n "> permissions</ span > < span class ="p "> :</ span >
678+ < span class ="c1 "> # This should not happen, but it's here for completeness</ span >
679+ < span class ="n "> style</ span > < span class ="o "> =</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> GREEN</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span >
668680 < span class ="k "> if</ span > < span class ="n "> return_address_symbol</ span > < span class ="p "> [:</ span > < span class ="mi "> 2</ span > < span class ="p "> ]</ span > < span class ="o "> ==</ span > < span class ="s2 "> "0x"</ span > < span class ="p "> :</ span >
669- < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors </ span > < span class =" o " > . </ span > < span class =" n " > RED </ span > < span class ="si "> }{</ span > < span class ="n "> return_address</ span > < span class ="si "> :</ span > < span class ="s2 "> #x</ span > < span class ="si "> }</ span > < span class ="s2 "> </ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> RESET</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span >
681+ < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> style </ span > < span class ="si "> }{</ span > < span class ="n "> return_address</ span > < span class ="si "> :</ span > < span class ="s2 "> #x</ span > < span class ="si "> }</ span > < span class ="s2 "> </ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> RESET</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span >
670682 < span class ="k "> else</ span > < span class ="p "> :</ span >
671- < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors </ span > < span class =" o " > . </ span > < span class =" n " > RED </ span > < span class ="si "> }{</ span > < span class ="n "> return_address</ span > < span class ="si "> :</ span > < span class ="s2 "> #x</ span > < span class ="si "> }</ span > < span class ="s2 "> <</ span > < span class ="si "> {</ span > < span class ="n "> return_address_symbol</ span > < span class ="si "> }</ span > < span class ="s2 "> > </ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> RESET</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span > </ div >
683+ < span class ="nb "> print</ span > < span class ="p "> (</ span > < span class ="sa "> f</ span > < span class ="s2 "> "</ span > < span class ="si "> {</ span > < span class ="n "> style </ span > < span class ="si "> }{</ span > < span class ="n "> return_address</ span > < span class ="si "> :</ span > < span class ="s2 "> #x</ span > < span class ="si "> }</ span > < span class ="s2 "> <</ span > < span class ="si "> {</ span > < span class ="n "> return_address_symbol</ span > < span class ="si "> }</ span > < span class ="s2 "> > </ span > < span class ="si "> {</ span > < span class ="n "> ANSIColors</ span > < span class ="o "> .</ span > < span class ="n "> RESET</ span > < span class ="si "> }</ span > < span class ="s2 "> "</ span > < span class ="p "> )</ span > </ div >
672684
673685
674686 < span class ="k "> def</ span > < span class ="nf "> _pprint_reg</ 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 "> register</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="kc "> None</ span > < span class ="p "> :</ span >
0 commit comments