zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    北大软件工程——第五周:UML
    北大软件工程——第四周:结构化分析方法2
    北大软件工程——第三周:结构化分析方法1
    linux挂载u盘、光盘、硬盘
    奇偶个数、数字特征值——第4周C编程练习
    时间换算、分队列——第3周C编程练习
    逆序三位数——第2周C编程练习
    回溯算法与分支限界法
    Tyvj1032
    Tyvj1032
  • 原文地址:https://www.cnblogs.com/YYPapa/p/7002040.html
Copyright © 2011-2022 走看看