<em id="hanht"></em>

    <dd id="hanht"></dd>

    <em id="hanht"><acronym id="hanht"></acronym></em>
    
    <button id="hanht"></button>
    <rp id="hanht"><object id="hanht"><blockquote id="hanht"></blockquote></object></rp><em id="hanht"></em>

    首頁 > 系統 > Linux > 正文

    Linux下定位異常消耗的線程實戰盤點

    2022-07-09 12:57:43
    字體:
    來源:轉載
    供稿:網友
    前言:
    之前分享過一篇Linux開發coredump文件分析實戰分享 ,今天再來分享一篇實戰文章。
     
    在我們嵌入式linux開發過程中,開發過程中我們經常會使用多進程、多線程開發。那么多線程使用過程中,我們大概率會遇到某線程長時間占用cpu,導致設備執行異常。
     
    通常只有四五個線程,我們可以通過一個個線程調試捕捉到異常線程,如果你開發的設備上面運行了大概三四十個線程,我們一下子不好看到對應哪個線程出問題,也不好使用列舉法進行搜索,這個時候我們需要配合一些工具進行監控以及檢查我們執行的進程下面的線程。下面我就給大家介紹一下我自己工作中實際遇到的例子。
     
    情節介紹:
    在工作中,我遇到這樣一個問題,我的設備跑機的時候發現,機器運行某些狀態時候有些怪異,對于某些機制的處理響應不夠及時,最后top檢查,發現是我運行的某個進程中的某幾個線程運行cpu占有率很高,導致其他的一些線程無法及時運行。
     
    找到問題了,接下來我們就開始找對應的線程然后進行修改,前文提到,進程里面有一兩個線程還好說,我們可以通過一些比較基礎的方法,一個個線程進行log或者其他手段的信息輸出,但是如果我們遇到單個進程里面有很多線程的時候,我們如何檢查呢?
     
    初步列一個使用的工具大綱:ps 組合命令、top組合命令、pstack、strace、ltrace、gdb attach 實時調試 、 kill 、coredump文件查看線程堆棧
     
    以上就是我使用到的一些命令和操作,接下來一一給大家進行分析和介紹:
     
    首先給大家介紹每個工具和命令詳細介紹,再用自己的一個小例子把這些工具進行組合使用說明。
     
    工具和組合命令詳細介紹
    首先給詳細的介紹一下這些工具說明書:
     
    ps 的選項參數介紹:
    ps命令大家在linux使用應該是很熟悉的,ps是Process Status的縮寫,用來列出系統中當前運行的進程。使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有僵死、哪些進程占用了過多的資源等等。ps命令所列出的進行是當前進程的快照,也就是并不是動態的,而是執行該命令時那一時刻進行的狀態。
     
    ps 的參數非常多, 在此僅列出幾個常用的參數并大略介紹含義
    -A 列出所有的進程
    -w 顯示加寬可以顯示較多的資訊
    -au 顯示較詳細的資訊
    -aux 顯示所有包含其他使用者的行程
    我一般都是使用 ps -aux進行查看后臺運行的進程pid
     
    下面再進行補充一下今天要使用到的ps組合命令
     
    查看進程對應的線程

    (編輯:錯新網)

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    一级特黄大片欧美久久久久_一本一道久久综合狠狠老_JLZZ日本人年轻护士_欧美男男作爱VIDEOS可播放
      <em id="hanht"></em>

      <dd id="hanht"></dd>

      <em id="hanht"><acronym id="hanht"></acronym></em>
      
      <button id="hanht"></button>
      <rp id="hanht"><object id="hanht"><blockquote id="hanht"></blockquote></object></rp><em id="hanht"></em>