Linux中调试指令

Linux多线程与进程调试技巧

1、查看进程多个线程

ps -T -p
会显示
进程/线程ID
PID SPID

top -Hp
会显示进程/线程ID
但是与ps不同的是,线程iD是以轻量进程ID显示,看不出来哪个线程属于哪个进程,主进程iD多少。

Linux 系统级获取pID与SPID,与ps top指令看到的一样。

pid_t pid = getpid(); // 获取进程 ID
pid_t spid = gettid(); // 获取线程 ID
当spid与pid相等时,表示为主线程

posix获取线程号pthread_t

pthread_t thread = pthread_self() ;
pthread_t类型本质上是一个描述线程的透明结构体指针。
pthread_t->uintptr_t,uintptr_t 理念就是用整数表示的指针类型
实际上pthread_t 结构体里包含pid与spid,但是因为是透明指针,无法获取其真实的结构体详情,所以无法从pthread_t获取到pid与spid。可以通过特殊手法也能获取到。

2、查看进程绑定核情况
taskset -p pid
显示的十进制数字6—>转换为2进制是110,每个1对应一个cpu,所以进程运行在#1,#2cpu上(cpu从0开始
启动时绑核:
#启动时绑定到第二个cpu

taskset -c 1 ./xxxbin &

#启动时绑定到第1个cpu,第3个cpu

taskset -c 0,2 ./xxxbin &

(cpu从0开始)

启动后绑定

按CPU数直接绑核

taskset -cp 1,2,5,11 9865 将进程9864绑定到#1、#2、#5、#11号核上面。

taskset -cp 1,2,5-11 9865 将进程9864绑定到#1、#2、#5~#11号核上面。

注意,cpu的标号是从0开始的,所以cpu1表示第二个cpu(第一个cpu的标号是0)。

3、top 指令中的PR
Linux进程的优先级分为两个类别:
普通进程
实时进程
每种类别的优先级计算方法也不同,对系统行为的影响也各不相同。
普通进程,优先级受Nice值影响,Nice-》[-20,19],其中-20表最高优先级,19表最低优先级,
PR=20 + NI,其中PR NI都是top指令输出表中列名,NI=Nice,默认情况下,新创建的进程继承父进程Nice值,通常为0.

实时进程优先级:
实时进程具有更高优先级,可以保证能够及时得到CPU响应。
实时进程 PR= -1 - RT
RT是实时优先级,RT 范围从1-99,99是最高优先级。
设置普通进程Nice值,
nice -n -5 ./xxxbin,或者使用renice 重新设置进程nice值。

设置实时进程优先级
chrt -rr 50 ./xxxbin

只有root用户才能设置负的的nice值或实时优先级

4、grep 时排除指定文件和目录

–exclude=FILE_PATTERN skip files and directories matching FILE_PATTERN
–exclude-from=FILE skip files matching any file pattern from FILE
–exclude-dir=PATTERN directories that match PATTERN will be skipped

grep -rn --exclude-dir=build_* --exclude-dir=kernel --exclude-dir=drivers --exclude=*.out ‘abcdefg’ .
grep --exclude-dir=“.svn” U_BOOT_CMD * -nR --exclude=“cscope.out” --exclude=“tags”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值