linux - 怎么根据pid分析该进程的代码
ringa_lee
ringa_lee 2017-04-17 11:51:17
[Linux讨论组]

有一个pid占用CPU 是 100% 如何追踪这个进程是卡在哪了?

不通过慢日志等手段,如何追踪分析呢。

ringa_lee
ringa_lee

ringa_lee

全部回复(2)
ringa_lee

努力做一个优秀的搬运工,附上链接是必要的,要翻译请尽管开口。
http://honglus.blogspot.com/2010/06/how-to-generate-thread-dump-for.html

How to generate core dump for an application in Linux
In order to troubleshoot application issue, a process content in memory can be dumped to a file and then the file can be analysed with debug tool, such as gdb in Linux.
Another way of doing this is to send QUIT signal to the PID (kill –3 PID), but the thread dump will be directed to stdout, which can be viewed with “cat /proc/PID/fd/1 |tee /tmp/dump.log”, messages will be constantly directed to /proc/PID/fd/1 until the process is stopped. So it is useful for real time debugging.
The following java application example use gcore command in gdb. (gcore or kill –3 will not stop the process )
Linux default core file size is 0, which means core dump is disabled, It needs to be changed to unlimited

#ulimit -a | grep core
core file size          (blocks, -c) 0
#ulimit –c unlimited
#ulimit -a | grep core
core file size          (blocks, -c) unlimited

Firstly, find the virtual memory size of the process, the PID is 10008 in following example.

# ps aux | egrep 'VSZ| 10008'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       10008  0.4  8.3 2231312 660100 ?      Sl   Jun03  43:57 /opt/sunjdk6/bin/java

The process VSZ=2.2GB, it will be the size of the core file. Go to a dump dir which has more than 2.2GB free space
$cd /var/tmp

Attach to running process PID.
$gdb --pid=10008

At the gdb prompt, enter gcore command
gdb>gcore

wait for few minutes for core file to be generated. type in quit to exit gdb, answer yes to detach the process.
gdb>quit

core file is generated

$ ls -lh /var/tmp/core.10008
-rw-r--r-- 1 root root 2.2G Jun 10 11:59 /var/tmp/core.10008

file command reveals the source program name

$ file /var/tmp/core.10008
/var/tmp/core.10008: ELF 64-bit LSB core file AMD x86-64, version 1 (SYSV), SVR4-style, from 'java'
天蓬老师
strace
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号