使用pstack和gdb调试进程
1. pgrep使用
- pgrep 是通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行。
用法: - ps 参数选项 程序名
- 常用参数
- -l 列出程序名和进程ID;
- -o 进程起始的ID;
- -n 进程终止的ID
- 举例:
- pgrep css
- 15978
2. pstack
- pstack 是 Linux(比如 Red Hat Linux 系统、Ubuntu Linux 系统等)下一个很有用的工具,它的功能是打印输出此进程的堆栈信息。可以输出所有线程的调用关系栈。
- 进程的pid可以通过ps命令或者上面的pgrep命令获取
- 举例
- pstack ‘pgrep css’
- pstack 15978
3. gdb
- gdb attach pid
- 断开调试 datach
- gdb path(二进制路径/exe) pid //挂载正在运行的进程
- info threads 显示程序运行的所有线程
- info sharedlibrary 显示所有共享库信息
- t 15 或者thread 15 切换的线程15
- bt 显示调用栈
- gcore core_name 命令生成CORE文件
- 进程信息可以用info proc显示
- 寄存器信息可以用info reg显示
4. top
获取进程下所有线程有哪些
- top获取进程pid
- 然后top -H -p pid即可