【Linux】进程ID和线程ID在日志中的体现

news/2024/10/20 0:22:38/

在分析内核打印日志流程的时候,发现有时候同一个进程函数调用关系比较混乱(因为只打印了进程号),现象就是一个函数走着走着不知道走哪里去了。 

另一个现象是,在Linux启动Firefox的时候,启了大概80个进程,其实这个时候也有点怀疑: 

Linux内核裁剪后编译重启查看日志_哔哩哔哩_bilibili

 

有点类似开始分析打印日志的时候,有多进程时,如果未把多进程的ID打印出来,是不太容易分析出来函数调用流程的,如下图所示红色方框这个字段,(注意,这图未针对函数调用关系混乱)

本来想的是,会不会是因为进程内多线程函数调用导致?

然后在网上搜索了下:看到一篇文章:

https://zhuanlan.zhihu.com/p/673084366

然后看了下fork.c的copy_process,然后看到创建进程后的pid和tgid的设置,如下图所示: 

这里可以看出,在创建进程的时候(实际有可能是线程) ,这个pid是不断变化的,但是如果是创建线程,tgid的值实际上是父进程的值,从上图中可以看出,父进程的tgid值是等于pid的值的(2507行和2516行)。

那么在原有的日志打印宏基础上需要添加task_struct->pgid的值,并且需要验证是不是这回事(其实原来的宏里已经包含这一字段):

这里需要注意的是:

1、测试的时候打印日志开关:touch LOG_MORE 

2、日志增长速度很快,日志打印开关打开了10秒,在这10秒内打开FireFox,然后访问百度,百度网页打开后,马上关闭日志打印:touch LOG_STOP,这个过程持续10多秒,日志63M:

然后查找进程名为:firefox的进程 

基于上面的描述,这个进程应该是主进程,再找找看看有没有线程:

 

等等。

这个pr_info_self打印宏其实还挺厉害,尤其是结合内核裁剪后,说不定更厉害。。。。。

感谢阅读。

 


http://www.ppmy.cn/news/1540375.html

相关文章

android11 usb摄像头添加多分辨率支持

部分借鉴于:https://blog.csdn.net/weixin_45639314/article/details/142210634 目录 一、需求介绍 二、UVC介绍 三、解析 四、补丁修改 1、预览的限制主要存在于hal层和framework层 2、添加所需要的分辨率: 3、hal层修改 4、frameworks 5、备…

视频美颜SDK与直播平台的融合:实现实时美颜的技术方案详解

视频美颜SDK作为一种技术解决方案,已经广泛应用于各类直播平台中,实现了实时美颜效果的优化。那么,视频美颜SDK是如何与直播平台融合,打造高效的实时美颜效果的?本文将对此技术方案进行详细解析。 一、视频美颜SDK的核…

滚雪球学Redis[6.2讲]:Redis脚本与Lua:深入掌握Redis中的高效编程技巧

全文目录: 📝前言🚦正文🌟6.2.1 Lua脚本的优势🖋️6.2.2 EVAL命令与Lua脚本编写🐵编写Lua脚本的基本步骤🐶示例:简单的GET和SET操作🐱示例:Lua实现自增和过期…

FFMPEG录屏(19)--- 枚举Windows下的屏幕列表,并获取名称、缩略图

在Windows下枚举显示器列表并获取名称、缩略图 在Windows系统中,枚举显示器列表并获取它们的名称和缩略图是一个常见的需求。本文将详细介绍如何实现这一功能,涉及到的主要技术包括Windows API和C编程。 获取显示器信息 首先,我们需要一个…

【升华】python基础包NumPy学习

NumPy是使用Python进行科学计算的基础软件包。除其他外,它包括: 功能强大的N维数组对象。精密广播功能函数。集成 C/C和Fortran 代码的工具。强大的线性代数、傅立叶变换和随机数功能。 # 1、安装包 $ pip install numpy# 2、进入python的交互式界面 $…

FFmpeg 4.3 音视频-多路H265监控录放C++开发四 :RGB颜色

一 RGB 的意义? 为什么要从RGB 开始讲起呢? 因为最终传输到显卡显示器的颜色都是RGB 即使能处理YUV的API,本质上也是帮你做了从 YUV 到 RGB的转换。 RGB888 表示 R 占8bit,G 占8bit,B 占8bit,也就是每一…

解锁A/B测试:如何用数据驱动的实验提升你的网站和应用

来源:Gallo, A. (2017, June 28). A refresher on A/B testing. Harvard Business Review. https://hbr.org/2017/06/a-refresher-on-ab-testing 在数字化时代,我们每天都在被大量的信息和广告轰炸。那么,如何让你的网站或应用脱颖而出&…

通信工程学习:什么是VPN虚拟私人网络

VPN:虚拟私人网络 VPN,即虚拟私人网络(Virtual Private Network),是一种通过公共网络(如互联网)建立的加密连接,用于保护用户的网络连接和数据传输的安全与隐私。以下是关于VPN的详细…