ps -axjf 命令查看是否存在 D+ 状态进程,该状态是指不可中断的睡眠状态。处于该状态的进程无法终止,也无法自行退出。只能通过恢复其依赖的资源或者重启系统来解决。
ps -axjf
top -c 然后按P,获取CPU使用率最高的进程
top -H 按照 线程名称显示 top -H -p pid 显示某pid的所有线程GDB 加载运行的进程
# 用法 xgdb.sh a prog_bin =$ 1 running_name = $(basename $prog_bin) pid =$(/sbin/ pidof $running_name) gdb attach $pid
使用gdb调试程序时,可以使用“ i frame ”命令( i 是 info 命令缩写)显示函数堆栈帧信
可以用“disas /m fun”(disas是disassemble命令缩写)命令将函数代码和汇编指令映射起来
如果只想查看某一行所对应的地址范围,可以:
(gdb) i line 13 Line 13 of " foo.c " starts at address 0x4004e9 <main+ 37 > and ends at 0x40050c <main+ 72 >.
如果只想查看这一条语句对应的汇编代码,可以使用“ disassemble [Start],[End] ”命令
使用gdb调试汇编程序时,可以用“ display /i $pc ”命令显示当程序停止时,将要执行的汇编指令
在gdb中,可以使用如下命令查看变量的类型: whatis xx ptype xx i variables xx
用gdb调试程序时,可以用下面的自定义命令,打印程序动态分配内存的信息:
define mallocinfo
set $__f = fopen( " /dev/tty " , " w " )
call malloc_info( 0 , $__f)
call fclose($__f)
end
以上面程序为例:
Temporary breakpoint 5 , main () at a.c: 7
7 int i = 0 ;
(gdb) mallocinfo
设置汇编指令格式:
在Intel x86处理器上,gdb默认显示汇编指令格式是AT& T格式。例如:
(gdb) disassemble main
Dump of assembler code for function main:
0x08050c0f <+ 0 >: push % ebp
0x08050c10 <+ 1 >: mov %esp,% ebp
0x08050c12 <+ 3 >: call 0x8050c00 <change_var>
0x08050c17 <+ 8 >: mov $ 0x0 ,% eax
0x08050c1c <+ 13 >: pop % ebp
0x08050c1d <+ 14 > : ret
End of assembler dump.
可以用“ set disassembly- flavor”命令将格式改为intel格式:
(gdb) set disassembly- flavor intel
(gdb) disassemble main
Dump of assembler code for function main:
0x08050c0f <+ 0 > : push ebp
0x08050c10 <+ 1 > : mov ebp,esp
0x08050c12 <+ 3 >: call 0x8050c00 <change_var>
0x08050c17 <+ 8 >: mov eax, 0x0
0x08050c1c <+ 13 > : pop ebp
0x08050c1d <+ 14 > : ret
End of assembler dump.
目前“ set disassembly-flavor”命令只能用在Intel x86处理器上,并且取值只有“intel”和“att”。
View Code
设置观察点只针对特定线程生效
gdb可以使用“ watch expr thread threadnum ”命令设置观察点只针对特定线程生效,也就是只有编号为 threadnum 的线程改变了变量的值,程序才会停下来,其它编号线程改变变量的值不会让程序停住
PS:
gdb可以使用“ rwatch ”命令设置读观察点,也就是当发生读取变量行为时,程序就会暂停住
gdb可以使用“ awatch ”命令设置读写观察点,也就是当发生读取变量或改变变量值的行为时,程序就会暂停
如果想在调试一个线程时,让其它线程暂停执行,可以使用“ set scheduler-locking on ”命令:
gdb 打印每个线程的bt ps 状态等命令
标签:sbin 系统 suv 特定 bsp variable 通过 scheduler class
查看更多关于gdb 打印每个线程的bt ps 状态等命令的详细内容...