linux调试技巧

计算可创建的最大线程数公式


理论上linux 上最大线程数是 = 总虚拟内存(用户空间) / 线程栈大小;

一般32bit PC机系统上,进程空间是4G,其中0——3G 是用户空间,3G ——4G 是内核空间,所以理论上最大线程数 = 3*1024/ 8M = 384个,考虑系统主线程占用情况,故可创建的最大线程大概为 < 384个;

linux 查看进程的线程数的方法

cat /proc/{pid}/status
或者
cat /proc/{pid}/status

使用pstree命令

// 打印所有进程及其线程
pstree -p 
// 打印某个进程的线程数
pstree -p {pid} | wc -l

GDB将所有线程堆栈输出到文件

在调试多线程程序时,经常需要查看线程堆栈信息,如果线程数目过多,每次查看一个线程堆栈,繁琐耗时。下面介绍一种一次性将所有线程堆栈输出到文件的方法。
首先,将gdb attach到调试线程
gdb -p pro_pid
然后,在GDB中设置调试文件路径,并开启日志选项
set logging file mylog.txt
set logging on
最后,输出所有线程堆栈到指定文件
thread apply all bt
或者简化命令
thr app all bt

GDB强制生成core文件


gcore [-o filename] pid

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值