Linux工具概述

2021-08-23 12:39:42 字數 2782 閱讀 5189

1 程式構建

step1:配置檢測當前環境是否滿足安裝軟體的依賴關係以及初始化程式

./configure–help

./configure –prefix=/usr/local/snmps指定安裝路徑

step2:編譯原始檔編譯鏈結生成可執行檔案

make-f mymakefile編譯指定的makefile檔案,

以下編譯選項是指定使用者環境變數,右邊庫是左邊的前提:

step3:安裝將生成的可執行檔案拷貝到指定路徑

make install

2 程式除錯

gdb 程式互動除錯

$gdb programmer 啟動gdb

> break main 設定斷點

> run 執行除錯程式

> next 單步除錯

> print var1 使用print列印某個變數值

> list 顯示當前除錯處的源**

> info b 顯示當前斷點設定情況

pstack 跟蹤棧空間

$pstrack < pid >

thread 7 (thread 1084229984 (lwp 4552)):

#0 0x00000000006f172a in ub::netreactor::callback ()

#1 0x00000000006fbbbb in ub::ubtask::callback ()

#2 0x000000302b80610a in start_thread () from /lib64/tls/libpthread.so.0

strace 分析系統呼叫

常用來跟蹤程序執行時的系統呼叫和所接收的訊號。程序不能直接訪問硬體裝置,當程序需要訪問硬體裝置時,必須由使用者態模式切換至核心態模式,通過系統呼叫訪問硬體裝置。

$ strace -o output.txt -t -tt -e trace=all -p < pid >

$ strace -p  實時輸出程序執行系統呼叫的情況

$ strace -f -f -o ~/straceout.txt myserver 跟蹤可執行程式

size 檢視程式記憶體占用

檢視程式執行時各個段的實際記憶體占用

$size a.out

text data bss dec hex filename

1146 256 8 1410 582 a.out

file 查詢檔案型別

$file a.out

strings 查詢資料中的文字資訊

$strings

fuser 顯示檔案使用者

顯示所有正在使用著指定的file, file system 或者 sockets的程序資訊

$fuser -m -u redis-server

$fuser –k /path/to/your/filename

3 效能優化

主要從兩個層面來介紹:系統層面和程式層面

分析系統瓶頸

top輸入m,檢視記憶體使用情況,檢測記憶體洩漏;

輸入p,檢視cpu情況:

%id空閒cpu值過低,則cpu存在瓶頸

%wa等待io的cpu過高,則io存在瓶頸

分析記憶體瓶頸

free更直觀詳細的檢視記憶體情況

系統實際可用的記憶體為free工具輸出的free+buffer+cached

缺少記憶體,系統響應變慢很明顯,因為這使得系統不停的做換入換出的工作

vmstat實時動態監視作業系統的記憶體和虛擬記憶體的動態變化

分析io瓶頸

iostat

分析程序呼叫

pstack

strace

優化程式**

二八法則:先優化最重要的少部分**

編完**,再優化:強調效率和可讀性

效能分析工具

gprof

> g++ -pg -o test main.cpp 使用-pg引數在目標**中插入用於效能測試的**片斷

> ./test 輸出gmon.out的效能資料檔案

> gprof test gmon.out 分析程式執行資訊

oprofile

sar

除錯記憶體洩漏

valgrind

ref:

Linux yum工具基本概述

1 yum是yellowdog update manager的簡稱,它能夠實現rpm管理的所有操作,並能夠自動解決各rpm包之間的依賴關係。2 yum是rpm的前端工具,是基於rpm來實現軟體的管理的乙個工具 3 不能用yum去管理windows的exe程式包,也不能用yum去管理ubuntu的de...

ABAP開發工具概述

在學習這門語言之前,讓我們先看看sap的二次開發具有哪些工具和技術 這裡給大家乙個overview 1 report 報表 報表程式的主要作用是從資料庫中抓取資料通過整理陳列出來,給企業高層或具有相關需求的人員檢視。如無特殊需求,此類程式一般不需客製screen menu title。a abap ...

Linux筆記 Linux概述

1 前邊root 當前使用者的賬號 2 後邊localhost 主機名 3 當前所在目錄 使用者的資料夾,是個變數。eg 對root,等價於 root 對vbird 一般使用者 等價於 home vbird 4 提示符 root 一般使用者提示符 root localhost command opt...