成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Native進程之Trace原理

開發(fā) 開發(fā)工具
今天講一講Native進程之Trace原理的內(nèi)容。

一. 概述

當發(fā)生ANR(Application Not Response),對于Java進程可通過kill -3向目標進程發(fā)送信號SIGNAL_QUIT, 輸出相應(yīng)的traces信息保存到目錄/data/anr/traces.txt;而對于Native進程可通過 debuggerd輸出traces信息。

進程

可通過一條命令來獲取指定Native進程的traces信息,例如輸出pid=17529進程信息:

通過一條命令來獲取指定Native進程的traces信息

執(zhí)行完該命令后直接輸出traces信息到屏幕,如下:

通過一條命令來獲取指定Native進程的traces信息

接下來說說debuggerd是如何輸出Native進程的trace。

二. Debuggerd

文章debuggerd守護進程詳細介紹了Debuggerd的工作原理,此處當執(zhí)行debuggerd -b命令后:

  1. Client進程調(diào)用send_request()方法向debuggerd服務(wù)端發(fā)出DEBUGGER_ACTION_DUMP_BACKTRACE命令;
  2. Debugggerd進程收到該命令,fork子進程中再執(zhí)行worker_process()過程;
  3. 子進程通過perform_dump()方法來根據(jù)命令DEBUGGER_ACTION_DUMP_BACKTRACE,會調(diào)用到dump_backtrace()方法輸出backtrace.

接下來,從dump_backtrace()方法講起:

2.1 dump_backtrace

[-> debuggerd/backtrace.cpp]

 dump_backtrace [-> debuggerd/backtrace.cpp]

2.2 dump_process_header

[-> debuggerd/backtrace.cpp]

dump_process_header  [-> debuggerd/backtrace.cpp]

例如:

dump_process_header  [-> debuggerd/backtrace.cpp]

2.3 dump_thread

[-> debuggerd/backtrace.cpp]

dump_thread  [-> debuggerd/backtrace.cpp]

2.4 dump_backtrace_to_log

[-> debuggerd/Backtrace.cpp]

 dump_backtrace_to_log  [-> debuggerd/Backtrace.cpp]

通過循環(huán)遍歷輸出整個backtrace中的每一棧幀F(xiàn)ormatFrameData的信息.

2.5 FormatFrameData

[-> debuggerd/Backtrace.cpp]

 FormatFrameData  [-> debuggerd/Backtrace.cpp]

例如:(這些map信息是由/proc/%d/maps解析出來的)

  1. #01 pc 000000000001cca4 /system/lib64/libc.so (epoll_pwait+32) 

2.6 dump_process_footer

[-> debuggerd/backtrace.cpp]

  1. static void dump_process_footer(log_t* log, pid_t pid) { 
  2.   _LOG(log, logtype::BACKTRACE, "\n----- end %d -----\n", pid); 

例如:----- end 1789 -----

三. 總結(jié)

通過debuggerd -b [pid],可輸出Native進程的調(diào)用棧,這些信息是通過解析/proc/[pid]/maps而來的。

【本文是51CTO專欄“小米開放平臺”原創(chuàng)文章,“小米開放平臺”微信公眾號xiaomideveloper】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2011-08-08 10:02:55

iPhone開發(fā) 進程 通信

2020-04-29 15:10:16

Linux命令進程

2011-08-24 10:45:23

Oracle數(shù)據(jù)庫進程從屬進程

2019-11-08 14:47:49

TCPIP網(wǎng)絡(luò)

2011-08-24 10:31:10

Oracle數(shù)據(jù)庫進程后臺進程

2010-10-09 16:48:04

2011-08-24 10:15:55

Oracle數(shù)據(jù)庫服務(wù)器進程

2020-12-04 19:28:53

CountDownLaPhaserCyclicBarri

2020-12-03 11:15:21

CyclicBarri

2020-11-30 16:01:03

Semaphore

2020-12-09 08:21:47

編程Exchanger工具

2020-12-16 10:54:52

編程ForkJoin框架

2017-01-10 13:39:57

Python線程池進程池

2021-02-14 21:05:05

通信消息系統(tǒng)

2018-07-06 14:00:55

Linux進程線程

2021-07-15 12:44:25

Shell編程進程

2016-10-21 11:04:07

JavaScript異步編程原理解析

2020-12-08 08:53:53

編程ThreadPoolE線程池

2018-05-31 10:57:31

Linux系統(tǒng)進程線程

2023-05-10 07:53:08

.Net開發(fā)多進程通信方式
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 99热国产在线播放 | 国产精品成人一区二区三区 | 热99| 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 天堂网中文字幕在线观看 | 日韩高清三区 | 四虎最新地址 | 成人精品一区二区 | 欧美在线 | 精品国产乱码久久久久久闺蜜 | 欧美一级三级在线观看 | 久久久久久国产精品免费免费狐狸 | hsck成人网 | 中文字字幕一区二区三区四区五区 | 在线91| 日本免费黄色 | 午夜a v电影 | 99精品一区二区 | 四虎在线观看 | 国产一区亚洲二区三区 | 日韩久久久久 | 亚洲精品18 | 精品国产一区久久 | 亚洲久草视频 | 1204国产成人精品视频 | 精品无码久久久久久国产 | 日韩一区二区在线视频 | 亚洲成av片人久久久 | 天天搞天天搞 | www.夜夜骑| 盗摄精品av一区二区三区 | 国产精品夜夜春夜夜爽久久电影 | 色接久久| 91九色在线观看 | 精品久久久久久久人人人人传媒 | 久婷婷 | 亚洲一区二区在线 | 精品国产视频 | 国产精品久久久久久久久污网站 | 欧美日韩国产精品激情在线播放 | 亚洲精品视频在线播放 |