• GDB中遍历art::Thread打印local reference的脚本


    #打印所有线程对应的local reference

    def dump_all_local_refernce
        set $list_head = &art::Runtime::instance_.thread_list_.list_.__end_
        set $list_node = $list_head->__next_
        while $list_node != $list_head
            set $tid =  $list_node->__value_->tls32_.tid
            set $top_index = $list_node->__value_->tlsPtr_.jni_env->locals.segment_state_.parts.topIndex
            printf "tid = %d, top_index = %d ",$tid,$top_index
            set $list_node = $list_node->__next_
        end
    end

    #打印指定线程的local reference

    def dump_local_refernce_by_tid
        set $list_head = &art::Runtime::instance_.thread_list_.list_.__end_
        set $list_node = $list_head->__next_
        while $list_node != $list_head
            if  $list_node->__value_->tls32_.tid == $arg0
                set $local_table =  $list_node->__value_->tlsPtr_.jni_env->locals
                set $top_index = $local_table.segment_state_.parts.topIndex
                p $top_index
                set $index = 0
                while $index < $top_index
                    set $irt_entry =  $local_table.table_[$index]
                    set $serial = $irt_entry.serial_
                    set $obj = (unsigned int *)$irt_entry.references_[$serial].root_.reference_
                    if $obj != 0
                        p /x *$obj
                    else
                        p /x 0x0
                    end
                    set $index += 1
                end
                loop_break
            end
            set $list_node = $list_node->__next_
        end

  • 相关阅读:
    委托使用不当导致内存变大
    Reactive Extension
    WPF TextBox输入显示提示
    Reactive Extensions 初识
    WPF 验证
    SPOJ 1487. Query on a tree III
    HDU3966 Aragorn's Story
    SPOJ 2939. Query on a tree V
    SPOJ 913. Query on a tree II
    SPOJ2666. Query on a tree IV
  • 原文地址:https://www.cnblogs.com/YYPapa/p/7002040.html
Copyright © 2020-2023  润新知