gdb 根据c语言二进制文件进程号查看内部多线程任务
C语言二进制文件 a 编译时添加了 -g (gdb 调试), 但是 gdb a 这种方式有时不容易复现一些场景。这时可以先正常启动 a, 然后根据 a 的进程号启动gdb调试。
# 1. 找到程序进程号
ps aux | grep a
# 2. 使用 GDB 附加到该进程
sudo gdb -p [PID]
# 3. 使用 info threads 命令来列出所有线程
(gdb) info threads
Id Target Id Frame
* 1 Thread 0x7f67884d0700 (LWP 62890) "a" 0x00007f6787dc338d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
2 Thread 0x7f6781eb2700 (LWP 62892) "a" 0x00007f6787dc338d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
3 Thread 0x7f67816b1700 (LWP 62893) "a" 0x00007f6787dc338d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
4 Thread 0x7f6780eb0700 (LWP 63052) "a" __lll_lock_wait_private () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:95
5 Thread 0x7f677bfff700 (LWP 63053) "a" 0x00007f6787dc338d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
6 Thread 0x7f677b7fe700 (LWP 63054) "a" 0x00007f6787dee3dd in write () at ../sysdeps/unix/syscall-template.S:84
7 Thread 0x7f677affd700 (LWP 63055) "a" 0x00007f6787dc338d in nanosleep () at ../sysdeps/unix/syscall-template.S:84
# 4. 可见程序 a 中有 7 个进程正在运行,选中其中一个进程查看
thread 1
# 5. 切换到感兴趣的线程后,使用 bt(或 backtrace)命令可以查看线程的调用堆栈。
bt
# 6. 完成调试后,可以使用 detach 命令来从进程中分离,然后使用 quit 退出 GDB
(gdb) detach
(gdb) quit
以上方法来自chatgpt, 个人实践验证,特此记录,留作后续参考。
gdb 根据c语言二进制文件进程号查看内部多线程任务的更多相关文章
- Linux如何查看进程、杀死进程、查看端口等常用命令
查看进程号 1.ps 命令用于查看当前正在运行的进程.grep 是搜索 例如: ps -ef | grep java表示查看所有进程里 CMD 是 java 的进程信息2.ps -aux | grep ...
- 【Linux】查看进程号
1.查看占用8080端口的进程号 lsof -i: | awk '{print $2}' | uniq | grep -P -o "[0-9]{2,5}" 2.查看使用java进程 ...
- 系统中sshd进程的查看,数量统计,进程号输出,进程清理命令
1. 查看sshd进程 ps -ef|grep sshd ps -ef:打开所有的进程 grep sshd:过滤出含有“sshd”字符的进程. 2. 查看sshd进程中的sftp进程,不含查询的进程 ...
- Linux下查看端口占用进程号,程序名的方法
Linux下查看端口占用进程号,程序名的方法,方便我们查找什么进程导致系统变慢等需要.linux下查看端口占用情况: 1. 查看哪个进程占用了819端口: case9-sghfofo:/usr/loc ...
- linux篇---根据端口号查看进程位置
1)说明:Linux的所有进程都保存在/proc/目录下,保存形式为:/proc/进程号.进入到进程号目录后,里面有一个cwd链接文件即指向的进程的的目录. 2) 操作: A:根据端口号查进程 如:l ...
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境
windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境 http://rongmayisheng.com/post/windows%E4%B8%8B%E7%94%A ...
- [转]gdb结合coredump定位崩溃进程
[转]gdb结合coredump定位崩溃进程 http://blog.sina.com.cn/s/blog_54f82cc201013tk4.html Linux环境下经常遇到某个进程挂掉而找不到原因 ...
- 【学习笔记】启动Nginx、查看nginx进程、查看nginx服务主进程的方式、Nginx服务可接受的信号、nginx帮助命令、Nginx平滑重启、Nginx服务器的升级
1.启动nginx的方式: cd /usr/local/nginx ls ./nginx -c nginx.conf 2.查看nginx的进程方式: [root@localhost nginx] ...
- Android进程命令查看
• 进程 是指一个具有独立功能的程序在某个数据集上的一次动态运行过程,它是系统进行资源分配和调度的最小单元. • 一个进程能够拥有多个线程.每一个线程必须有一个父进程. • ...
- ●linux进程的查看与操作●
查看进程:ps -le | more ,ps -aux | more ,ps & 后台运行 jobs 查看后台进程 fg [n]调到前台 bg放到后台 ctrl +c 终止 ctrl ...
随机推荐
- Linux中的umask
在Linux中,当创建一个文件或者目录的时候,系统会自动为这个文件或者目录赋予默认的权限,而umask命令就是用来控制这个默认权限的. 查看umask umask的查看有两种方式,一种不带选项-S,一 ...
- PAT 练习2-3 输出倒三角图案
结果: 本题要求编写程序,输出指定的由"*"组成的倒三角图案. 输入格式: 本题目没有输入. 输出格式: 按照下列格式输出由"*"组成的倒三角图案. 一般都用的 ...
- C 语言编程 — 高级数据类型 — 结构体与位域
目录 文章目录 目录 前文列表 结构体 定义结构体 初始化结构体变量 访问结构体成员 将结构体作为实参传入函数 指向结构体变量的指针 位域 定义位域 使用位域结构体的成员 前文列表 <程序编译流 ...
- 4G EPS 中的 User Plane
目录 文章目录 目录 前文列表 用户平面 EPS UP 中的 GTP-U F-TEID 的组成 UE IP 数据包在 GTP-U Tunnel 上的封装流程 GTP-U 与 EPS Bearer MM ...
- PageOffice——动态填充Word模板并在线编辑
说明:使用pageoffice动态给word模板填充数据,插入图片.excel.word格式的文件和创建表格 一.准备工作: 本地创建一个doc或者docx格式的文件,在文件中需要插入数据的地方设置以 ...
- Django性能优化:提升加载速度
title: Django性能优化:提升加载速度 date: 2024/5/20 20:16:28 updated: 2024/5/20 20:16:28 categories: 后端开发 tags: ...
- 联网安装与源码安装mysql
一.卸载mariadb的rpm包 1.首先,你需要找出已安装的MariaDB包的具体名称.可以使用以下命令列出所有已安装的MariaDB包: rpm -qa | grep mariadb 2.删除命令 ...
- Dubbo SPI扩展机制源码详解(基于2.7.10)
Dubbo SPI 一. 概述 本文主要分享 Dubbo 的拓展机制 SPI. 想要理解 Dubbo ,理解 Dubbo SPI 是非常必须的.在 Dubbo 中,提供了大量的拓展点,基于 Dubbo ...
- Docker环境如何配置?使用阿里云OOS一步搞定!
背景介绍 系统运维管理OOS及扩展程序 系统运维管理OOS(CloudOps Orchestration Service)针对在阿里云ECS实例上部署应用和驱动的复杂性,特别设计了扩展程序,旨在简化用 ...
- Understanding Swift’s value type thread safety - 代码分析(一)
结构体并不代表线程安全,swift在此上未做保证 func testScenarioA() throws { var store: Int = 0 DispatchQueue.concurrentPe ...