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

  • 相关阅读:
    您所不了解的Postgres 10功能:CREATE STATISTICS(译)
    MySQL中建表时可空(NULL)和非空(NOT NULL)的一些思考
    IIS 反向代理 支持 CORS 跨域
    RSA 相关
    python创建虚拟环境
    python 删除文件某一行
    Spring Boot JWT 用户认证
    无法访问Docker 里的 mysql, redis
    Docker 安装 kafka
    SpringBoot Docker 发布到 阿里仓库
  • 原文地址:https://www.cnblogs.com/YYPapa/p/7002040.html
Copyright © 2011-2022 走看看