linux下檢視跟蹤執行緒
假設程序為my_process:
# ps -ef|grep my_process
root 10001 3322 0 14:05 ? 00:01:19 my_process
root 26844 23970 0 17:12 pts/0 00:00:00 grep my_process
1) 通過ps命令檢視執行緒,SPID是執行緒ID,STAT是執行緒狀態
# ps H -T -p 10001
PID SPID TTY STAT TIME COMMAND
10001 10001 ? Sl 0:00 my_process
10001 10023 ? Sl 0:00 my_process
10001 10229 ? Sl 0:00 my_process
10001 10282 ? Sl 0:04 my_process
10001 10283 ? Sl 0:02 my_process
10001 10284 ? Sl 0:01 my_process
10001 10285 ? Sl 0:02 my_process
10001 10286 ? Sl 0:04 my_process
10001 10287 ? Sl 0:04 my_process
10001 10288 ? Sl 0:00 my_process
10001 10289 ? Sl 0:00 my_process
10001 10290 ? Sl 0:00 my_process
2) 通過top命令檢視執行緒資源佔用,PID是執行緒ID
# top -H -p 10001
top - 17:14:54 up 9 days, 21:54, 2 users, load average: 0.07, 0.07, 0.05
Threads: 51 total, 0 running, 51 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.7 sy, 0.0 ni, 99.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 4046852 total, 2947116 free, 621440 used, 478296 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 2842320 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10300 root -46 0 2048420 422828 19784 S 0.3 10.4 0:01.15 my_process
10302 root -98 0 2048420 422828 19784 S 0.3 10.4 0:03.01 my_process
10332 root -66 0 2048420 422828 19784 S 0.3 10.4 0:09.63 my_process
10001 root -97 0 2048420 422828 19784 S 0.0 10.4 0:00.30 my_process
10023 root -92 0 2048420 422828 19784 S 0.0 10.4 0:00.00 my_process
10229 root -11 0 2048420 422828 19784 S 0.0 10.4 0:00.29 my_process
10282 root -96 0 2048420 422828 19784 S 0.0 10.4 0:05.03 my_process
10283 root -97 0 2048420 422828 19784 S 0.0 10.4 0:02.14 my_process
10284 root -34 0 2048420 422828 19784 S 0.0 10.4 0:01.82 my_process
10285 root -34 0 2048420 422828 19784 S 0.0 10.4 0:02.32 my_process
3) 通過pstack檢視執行緒back trace, 需要-g編譯包含符號表,僅適用於32位系統。
4)通過strace跟蹤執行緒系統呼叫
strace -p pid 其中pid為執行緒ID,可以跟蹤某個執行緒
strace -fp pid其中pid為程序ID,可以跟蹤該程序的所有執行緒
相關推薦
linux下檢視跟蹤執行緒
假設程序為my_process: # ps -ef|grep my_process root 10001 3322 0 14:05 ? 00:01:19 my_process root 26844 23970 0 17:12 pts/0
linux下程序和執行緒狀態檢視
檢查 使用 ps -fe |grep programname 檢視獲得程序的pid,再使用 ps -Lf pid 檢視對應程序下的執行緒數. 查詢資料發現可以通過設定 ulimit -s 來增加每程序執行緒數。 每程序可用執行緒數 = VIRT上限/stack size
JVM調優(二)——Linux下監控java執行緒
Linux環境下,當發現java程序佔用CPU資源非常高,且又要想更進一步查出哪一個java執行緒佔用了CPU資源時該如何做呢? 一、採用命令列形式檢視執行緒,最終用dump進行文字分析 1、top命令既可以看程序,又可以看執行緒 1、top命令找出佔用資源厲害
Linux下檢視可執行檔案、動態庫的ELF頭等資訊
用法: readelf <option(s)> elf-file(s) 作用: 和Windows下的PE檔案類似,ELF檔案是linux系統下可執行檔案、動態庫檔案、靜態庫檔案的標準格式。有時候我們需要檢視ELF檔案的頭資訊,或者動態庫檔
linux下的多執行緒/多程序同步/通訊機制
while (1) { //這個mutex主要是用來保證pthread_cond_wait的併發性 pthread_mutex_lock(&mtx); while (head == NULL) {
Linux下的多執行緒程式設計二(執行緒的同步與互斥)
一、什麼叫做執行緒的同步與互斥?為什麼需要同步與互斥? 1、同步與互斥 互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。 同步:是指在互斥的基礎上(大多數情況),通過其它機制
樹莓派3B Linux下C++多執行緒程式設計
下面的程式碼手動建立了兩個執行緒,一個執行緒是讀取串列埠的資料,另一個執行緒是通過UDP來讀取網路通訊收到的資料。加上main函式的執行緒,一共三個執行緒。 先簡單講一下多執行緒的建立, pthread_t serial; int ser =
如何在Windows和Linux下獲取當前執行緒的ID號
Linux下獲取當前執行緒ID號函式: pthread_t pthread_self(); 返回:當前執行緒的ID號 pthread_t 資料型別的定義如下: typedef unsigned long int pthread_t; sizeof(pthread_t) =
linux下用多執行緒實現socket伺服器和客戶端的非同步通訊
前面介紹了用select函式來實現socket的非同步收發資料,但是select函式也有一些缺陷,要使socket能持續地通訊,select必須不停地檢測,這樣程序就會一直阻塞在這裡,限制了功能的擴充套件,這裡我們用多執行緒的方式,另建立兩個執行緒用來發送/接收
Linux下sqlite3多執行緒和序列模式
sqlite3支援三種模式:單執行緒模式,多執行緒模式和序列模式。 模式可在編譯,啟動時或執行時設定,一般來講,啟動時的設定會覆蓋編譯時的設定,執行時則會覆蓋啟動時或編譯時的設定。但是一旦單執行緒模式被設定之後就不能再被覆蓋了。 編譯時可通過SQLITE_T
linux下核心多執行緒的簡單實現
#include<linux/init.h> #include<linux/module.h> #include<linux/kernel.h> #include<linux/delay.h> #include<linux/wait.h> #incl
Linux下c++多執行緒和互斥鎖
一、多執行緒 多執行緒使用的是pthread庫,寫程式的時候需要引入標頭檔案pthread.h, g++編譯的時候需要加上該庫的依賴“-lpthread”。 1 先看程式便於理解,程式碼下面有對註釋的解釋。下面的程式碼含義是建立兩個執行緒,一個執行緒去計算某
Linux 下程序與執行緒的關係
一.基礎知識:執行緒和程序 按照教科書上的定義,程序是資源管理的最小單位,執行緒是程式執行的最小單位。在作業系統設計上,從程序演化出執行緒,最主要的目的就是更好的支援SMP以及減小(程序/執行緒)上下文切換開銷。 無論按照怎樣的分法,一個程序至少需要一個執行緒作為它的指令執行體,程序管理著資源(比如cpu、記
Linux下的多執行緒程式設計
我們編譯此程式: gcc example1.c -lpthread -o example1 執行example1,我們得到如下結果: This is the main process. This is a pthread. This is the main process. This is the ma
linux 下檢視某一程序的cpu使用率和這個執行緒中各個執行緒的cpu使用率
在Ubuntu/CentOS等linux系統中, 在除錯程式過程中,有時需要檢視程式的CPU的使用率和程式的各個程序的使用率. 那麼首先需要獲取這個程序的PID: ps -ef|grep [process name] 然後檢視該程序的CPU: top -p [PID]
linux 下檢視執行緒狀態
前言 在除錯程式時需要檢視各個執行緒的狀態,方便定位問題。 解決 方法1、pstree pstree PID 方法2、top top 然後按H,會顯示執行緒 -p
Linux下檢視某個程序建立了多少執行緒
方法一: 1. 找出程序號: cba001:/proc/21723 # ps -ef|grep named root 30659 1 0 16:45 ? 00:00:00 /opt/***/***/usr/bin/named root
linux下檢視CPU個數、核數、執行模式以及是否支援超執行緒技術
1.檢視物理CPU個數 #cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l 執行結果:1 2.檢視邏輯CPU個數 #cat /proc/cpuinfo |grep "processor"|wc -l 執行結果:
Linux下檢視消耗CPU的執行緒
javaweb 專案部署後發現很耗cpu,需要查出問題所在 寫個測試程式,記相關步驟: 故意寫個死迴圈 public class TestCpu { public static void main(String[] args) { while (t
Linux/Windows下C++設定執行緒名字方便多執行緒除錯
C++多執行緒程式設計,除錯是一個大問題,原因之一就是,執行緒名字繼承了父程序的名字,因此導致同一段程式碼的不同執行緒名字一樣;而且還會導致執行緒的名字怪怪的,不好看。 因此,如果在程式碼中可以設定執行緒的名字就好了,這樣在除錯中就可以看到期望的執行緒名字,這樣便於除錯。 由於編