导航:首页 > 编程大全 > 进程诊断工具

进程诊断工具

发布时间:2023-06-27 04:39:33

1. linux下一般怎么诊断是哪个进程有memory leak

可以使用Valgrind工具

Valgrind包括如下一些工具:

Memcheck。这是应用最广泛的工具,一个重量级的内存检查器,能够发现开发中绝大多数内存错误使用情况,比如:使用未初始化的内存,使用已经释放了的内存,内存访问越界等。这也是本文将重点介绍的部分。

Callgrind。它主要用来检查程序中函数调用过程中出现的问题。

Cachegrind。它主要用来检查程序中缓存使用出现的问题。

Helgrind。它主要用来检查多线程程序中出现的竞争问题。

Massif。它主要用来检查程序中堆栈使用中出现的问题。

Extension。可以利用core提供的功能,自己编写特定的内存调试工具

Valgrind使用

用法: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

LOG信息输出

-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]

Valgrind使用举例(一)

下面是一段有问题的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显示器底座怎么拆开

阅读全文

与进程诊断工具相关的资料

热点内容
硬盘有点坏文件复制到桌面很慢 浏览:894
尼尔pod技能升级 浏览:586
vb编程打开pdf文件 浏览:617
qq七彩气泡id大全 浏览:963
iphone4只能免提说话才有声音 浏览:79
CNC雕刻机用什么软件编程 浏览:173
aoe什么文件 浏览:111
高大上的网站是怎么样的 浏览:169
win10安装找不到ssd硬盘 浏览:610
js中addtag 浏览:702
cnc编程跟绘图哪个难学 浏览:96
新手做游戏编程用什么 浏览:793
oracel数据库恢复 浏览:403
c语音编程题怎么做 浏览:50
凯立德可升级2016 浏览:350
去哪里找猫咪app 浏览:251
qq86级 浏览:749
linuxtelnet代码 浏览:418
极品飞车17主程序 浏览:426
otg连接了怎么找不到文件 浏览:564

友情链接