@@ -664,11 +664,23 @@ <h1>Source code for libdebug.state.thread_context</h1><div class="highlight"><pr
664
664
< 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 >
665
665
< 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 >
666
666
< 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 >
668
680
< 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 >
670
682
< 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 >
672
684
673
685
674
686
< 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