gdb单步调试时top看不到所调试的进程

最近用gdb调试程序时,新开窗口用top命令查看调试进程的内存占用情况,但总遇到在单步调试时,由于程序执行太慢,top看不到调试进程的情况。

后查明,这是由于默认进入top时,各进程是按照CPU的占用量来排序的,单步调试程序执行太慢,有时cpu占用量为0.

解决办法:在top窗口用键盘敲“u”,然后输入当前用户名,则top窗口显示的都为该用户下的进程信息。

其他一些有用也很有意思的top视图

多U多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况。

进程字段排序

1. 敲击键盘“b”(打开/关闭加亮效果),可以通过敲击“y”键关闭或打开运行态进程的加亮效果。

2. 敲击键盘“x”(打开/关闭排序列的加亮效果),通过”shift + >”或”shift + <”可以向右或左改变排序列。

改变进程显示字段

1. 敲击“f”键,top进入另一个视图,在这里可以编排基本视图中的显示字段。

这里列出了所有可在top基本视图中显示的进程字段,有”*”并且标注为大写字母的字段是可显示的,没有”*”并且是小写字母的字段是不显示的。如果要在基本视图中显示“CODE”和“DATA”两个字段,可以通过敲击“r”和“s”键。

2. “回车”返回基本视图,可以看到多了“CODE”和“DATA”两个字段。

top命令的补充
top命令是Linux上进行系统监控的首选命令,但有时候却达不到我们的要求,比如当前这台服务器,top监控有很大的局限性。这台服务器运行着websphere集群,有两个节点服务,就是【top视图 01】中的老大、老二两个java进程,top命令的监控最小单位是进程,所以看不到我关心的java线程数和客户连接数,而这两个指标是java的web服务非常重要的指标,通常我用ps和netstate两个命令来补充top的不足。

监控java线程数:
       ps -eLf | grep java | wc -l

监控网络客户连接数:
       netstat -n | grep tcp | grep 侦听端口 | wc -l

上面两个命令,可改动grep的参数,来达到更细致的监控要求。
在Linux系统“一切都是文件”的思想贯彻指导下,所有进程的运行状态都可以用文件来获取。系统根目录/proc中,每一个数字子目录的名字都是运行中的进程的PID,进入任一个进程目录,可通过其中文件或目录来观察进程的各项运行指标,例如task目录就是用来描述进程中线程的,因此也可以通过下面的方法获取某进程中运行中的线程数量(PID指的是进程ID):

ls /proc/PID/task | wc -l

在linux中还有一个命令pmap,来输出进程内存的状况,可以用来分析线程堆栈:

pmap PID

参考文章链接:http://www.jb51.net/article/40807.htm

时间: 2024-11-02 23:40:59

gdb单步调试时top看不到所调试的进程的相关文章

[VS调试]VS2010 VS2012调试时显示加载符号导致调试特别慢

下午睡多了,编个小程序(探索形式)搞到现在,遇到一个不爽的问题就是调试时加载很慢,这次百度终于解决了. 打开”调试”–>”选项”看下图: [VS调试]VS2010 VS2012调试时显示加载符号导致调试特别慢,布布扣,bubuko.com

解决GDB调试时“ No symbol table is loaded. Use the &quot;file&quot; command”问题

1.解决的办法 : GDB调试时使用list命令时出现 “No symbol table is loaded. Use the "file" command”提示,其实是C编译器的选项CFLAGS没有设置好,gcc -o进行编译时不用不用写“-g”选项,只需在makefile文件开头写上“CFLAGS = -g”在编译时编译器就会自动使用CFLAGS的设置了. 2.探索的过程: 我的makefile文件是这样编写的: “make clear”.“make main”.“gdb main

使用gcc -g编译,gdb调试时仍然存在“no debug symbols found”的错误

今天为调试一段代码,使用gcc将程序用-g选项重新编译.但是使用gdb进行debug时,仍然出现“no debug symbols found”的错误.仔细检查了一下Makefile,原来后面定义的连接选项中指定了-s.gcc的文档中说明如下: -sRemove all symbol table and relocation information from the executable. 去掉-s后,可以用gdb进行调试了

VS2010调试时,对于一些语句不能单步运行也不能对变量添加监视的问题

在以mfc建立的工程中,需要建立一个链表来保存一些数据.但是在创建结构体,以及对其赋值的过程中,发现对结构体变量不能观察,添加到监视器中的变量也出现变量名不存在的错误. 首先,在文件的开始定义一个结构体 struct drop_link { int num; int x; int y; struct drop_link *next_node; }; 然后在一个按钮函数中编写以下代码: int m=9: struct drop_link drop; drop.num=1; drop.x=2; dr

CentOS 6.5上使用gdb调试时出现Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686 .

在CentOS6.5上用gdb调试时提示Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.132.el6.i686 先修改/etc/yum.repos.d/CentOS-Debuginfo.repo里面的debuginfo目录中enabled=1 然后yum install nss-softokn-debuginfo 安装好后,根据提示输入debuginfo-install glibc-2.12-1.132.el6.

转:QTCreater调试时提示ptrace不允许的操作(点击调试之后40秒钟gdb无回应)

1. 问题描述 用QTCreater建立了一个纯C++的项目,但是在F5调试时,竟然提示ptrace不允许的操作,修改工程配置为Debug也不管用,经过网上搜索,原来还需要修改一下系统ptrace的配置. 2. 解决办法 临时性的解决方法 $ sudo echo 0 > /proc/sys/kernel/yama/ptrace_scope 这样不过重启电脑之后就又恢复成原来的样子了,一劳永逸的方法: $ sudo vi /etc/sysctl.d/10-ptrace.conf $ kernel.

GDB单步调试程序

linux下gdb单步调试 用 GDB 调试程序 GDB 概述———— GDB 是 GNU开源组织发布的一个强大的 UNIX下的程序调试工具.或许,各位比较喜欢那种图形界面方式的,像 VC. BCB等 IDE的调试,但如果你是在 UNIX平台下做软件,你会发现 GDB这个调试工具有比 VC. BCB的图形化调试器更强大的功能.所谓 “寸有所长,尺有所短 ”就是这个道理. 一般来说, GDB主要帮忙你完成下面四个方面的功能: 1 .启动你的程序,可以按照你的自定义的要求随心所欲的运行程序.   

xdebug调试时出错,查找原因

昨天在远程调试时,刚开始调试的好好的,突然发现返回的结果变成502了,不对呀!刚刚明明是200的呀!然后我重启了nginx和php-fpm,还是一样的502,难道是代码又有bug了.看了下php-fpm的日志,发现没有任何的出错记录,调试时就是直接断掉,返回个502,什么原因呢? 这时请教了龙哥,在服务器端跟踪php-fpm进程执行时的系统调用和所接收的信号. 首先把php-fpm的进程数量设置为1个,这样就找到是哪个进程处理了cgi请求. 设置好后重启php-fpm服务. 重启后找出那个php

VS2015--在 Visual Studio 中调试时映射调用堆栈上的方法

https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 在 Visual Studio 中调试时映射调用堆栈上的方法 创建代码图,以便在调试时对调用堆栈进行可视化跟踪.你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug. 生成调用堆栈图 1 开始调试.(键盘:"F5") 2 在你的应用进入中断模式或你单步执行某一函数之后,请选择"代码图".(键盘:Ctrl + Shift + `) 当前的调用堆栈在