1. linux下一般怎麼診斷是哪個進程有memory leak
Memcheck。這是應用最廣泛的工具,一個重量級的內存檢查器,能夠發現開發中絕大多數內存錯誤使用情況,比如:使用未初始化的內存,使用已經釋放了的內存,內存訪問越界等。這也是本文將重點介紹的部分。
Callgrind。它主要用來檢查程序中函數調用過程中出現的問題。
Cachegrind。它主要用來檢查程序中緩存使用出現的問題。
Helgrind。它主要用來檢查多線程程序中出現的競爭問題。
Massif。它主要用來檢查程序中堆棧使用中出現的問題。
Extension。可以利用core提供的功能,自己編寫特定的內存調試工具
用法:valgrind[options] prog-and-args [options]: 常用選項,適用於所有Valgrind工具
-tool=<name> 最常用的選項。運行valgrind中名為toolname的工具。默認memcheck。
h –help 顯示幫助信息。
-version 顯示valgrind內核的版本,每個工具都有各自的版本。
q –quiet 安靜地運行,只列印錯誤信息。
v –verbose 更詳細的信息, 增加錯誤數統計。
-trace-children=no|yes 跟蹤子線程? [no]
-track-fds=no|yes 跟蹤打開的文件描述?[no]
-time-stamp=no|yes 增加時間戳到LOG信息? [no]
-log-fd=<number> 輸出LOG到描述符文件 [2=stderr]
-log-file=<file> 將輸出的信息寫入到filename.PID的文件里,PID是運行程序的進行ID
-log-file-exactly=<file> 輸出LOG信息到 file
-log-file-qualifier=<VAR> 取得環境變數的值來做為輸出信息的文件名。 [none]
-log-socket=ipaddr:port 輸出LOG到socket ,ipaddr:port
-xml=yes 將信息以xml格式輸出,只有memcheck可用
-num-callers=<number> show <number> callers in stack traces [12]
-error-limit=no|yes 如果太多錯誤,則停止顯示新錯誤? [yes]
-error-exitcode=<number> 如果發現錯誤則返回錯誤代碼 [0=disable]
-db-attach=no|yes 當出現錯誤,valgrind會自動啟動調試器gdb。[no]
-db-command=<command> 啟動調試器的命令行選項[gdb -nw %f %p]
適用於Memcheck工具的相關選項:
-leak-check=no|summary|full 要求對leak給出詳細信息? [summary]
-leak-resolution=low|med|high how much bt merging in leak check [low]
-show-reachable=no|yes show reachable blocks in leak check? [no]
下面是一段有問題的C程序代碼test.c
#i nclude <stdlib.h>
void f(void)
{
int* x = malloc(10 * sizeof(int));
x[10] = 0; //問題1: 數組下標越界
} //問題2: 內存沒有釋放
int main(void)
{
f();
return 0;
}
1、 編譯程序test.c
gcc -Wall test.c -g -o test
2、 使用Valgrind檢查程序BUG
valgrind --tool=memcheck --leak-check=full ./test
使用未初始化內存問題
對於位於程序中不同段的變數,其初始值是不同的,全局變數和靜態變數初始值為0,而局部變數和動態申請的變數,其初始值為隨機值。如果程序使用了為隨機值的變數,那麼程序的行為就變得不可預期。
下面的程序就是一種常見的,使用了未初始化的變數的情況。數組a是局部變數,其初始值為隨機值,而在初始化時並沒有給其所有數組成員初始化,如此在接下來使用這個數組時就潛在有內存問題。
輸出結果顯示,在該程序的第15行,進行了非法的寫操作;在第16行,進行了非法讀操作。准確地發現了上述問題
2. hp伺服器硬體診斷工具ProLiant是什麼
惠普公司(Hewlett-Packard Development Company, L.P.,簡稱HP)總部位於美國加利福尼亞州的帕羅奧多(Palo Alto),下面是我帶來的關於hp伺服器硬體診斷工具ProLiant是什麼的內容,歡迎閱讀!
hp伺服器硬體診斷工具ProLiant是什麼?
一、伺服器測試的准備工作:
測試軟盤的製作方式:
1)通過運行隨機的SMART START 光碟下DSKBLDRSETUP.EXE程序獲得一張測試軟盤..
2)通過從http://www.compaq.com/support/files/server/us/index.html下載軟體包, 再解包, 獲得一張測試軟盤..
二、伺服器測試的預備知識:
如下圖所示, PROLIANT 伺服器的測試軟盤可提供三種測試方式, 即
Quick Check Diagnostics(快速測試): 將使用最短的時間完唯譽前成測試, 但它非全面硬體測試方式.
Automatic Diagnostics(自動測試): 對系統進行最全面的硬體檢測, 但無法選擇更多測試內容.
Prompted Diagnostics(提示測試): 可對系統進行最全面的硬體檢測, 且提供允許可選測試內容界面. 但須熟悉系統配置.
2) Version S11.01 A 以前的測試程序, 根據具體的硬體配置不同, 若採用全面硬體測試方式, 即Prompted Diagnostics及Automatic Diagnostics, 可花費半天或兩, 三天不等的時間.
Version S11.01 A(包括此版本) 以後的測試程序由於採用新的檢測機制, 時間大大縮小, 如 512MB 內存檢測僅須不到1小時.
3) 測試前, 若伺服器有磁帶機, 須將一空白磁帶置入其中. 若有光碟機, 須將一光碟置入. 所有電話線須與伺服器MODEM斷開.
4) 建議在測試完成後, 保存測試結果 報告 .
三. 以下將以 Automatic Diagnostics 為例, 詳細介紹測試步驟.
步驟一: 將Diagnostics 盤插入伺服器軟碟機, 加電, 系統將自動從軟碟機引導. 屏幕顯示如下菜單:
選擇Computer Checkup (TEST) 即進入伺服器硬體測試方式選項
步驟二. 如下圖所示, 選擇Automatic Diagnostics .
步驟三: 選擇Automatic Diagnostics後, 屏幕顯示以下菜單:
建議選擇 Unattended Testing 及Log to DIAG.LOG 兩項, 然後選擇OK, 進入測試循環次數選擇界面.
根據客戶需要及時間安排定義測試循環次數後, 選擇OK, 屏幕提示如下信息.
選擇No, 屏幕提示如下:
若串口有電纜連接, 請移開此電纜, 然後選擇Continue, 則屏幕顯示以下測試進程光條:
虛畝步指清驟四: 當測試完成後, 如下所示, 屏幕返回以前菜單. 選擇Test Log 選項.
選擇Test Log 選項. 進入以下界面, 可檢查測試結果.
選擇Save to DIAG.LOG, 則在軟盤上存儲一測試結果拷貝. 備檔. 退出伺服器測試項即可.
看了hp伺服器硬體診斷工具ProLiant是什麼 文章 內容的人還看:
1. hp液晶顯示器怎麼拆
2. hp顯示器怎麼調解析度
3. cpu最高主頻是什麼
4. hp顯示器怎麼樣
5. hp2009f顯示器怎麼拆
6. hp顯示器怎麼拆開
7. hp2009f顯示器無法關閉怎麼辦
8. hp顯示器底座怎麼拆
9. hp顯示器怎麼調亮度
10. hp顯示器底座怎麼拆開