スポンサーリンク

このドキュメントの内容は、以下の通りです。

はじめに


実行中のプロセスのコアイメージを取得したいときは、gcoreコマンドで取得することができます。
gcoreは, get core images of running processです。

pidには、取得したいプロセスのPIDを指定します。

gcore pid


取得したいプロセスのpidを取得します。

% ps auxww|fgrep httpd
www     5954  4.6  4.6 38764 22188  ??  S     9:08PM   5:22.06 /usr/local/sbin/httpd
www     5945  3.2  4.6 38712 22132  ??  S     9:08PM   5:41.32 /usr/local/sbin/httpd
www     5951  3.2  4.6 38740 22160  ??  S     9:08PM   5:32.62 /usr/local/sbin/httpd
www     5948  3.0  4.7 39252 22492  ??  S     9:08PM   5:26.11 /usr/local/sbin/httpd
www     5953  2.1  4.6 38756 22192  ??  S     9:08PM   5:28.58 /usr/local/sbin/httpd
% sudo gcore 5954
% ls
core.5954

core.pidというファイル名で保存されます。


gdb で動いているプロセスをアタッチすることができますが、
サービスしているシステムで、サービスのためのプロセスをつかんでしまうと
サービス的に問題があるときに、gcoreでさくっとコアを手に入れ、
そのコアをじっくりいじるのがいいでしょう。

gdbからgcoreを実行する方法


exコマンドをgdbでattachしてcoreを取得する例。
% gdb
GNU gdb 6.1.1 [FreeBSD]
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-marcel-freebsd".
(gdb) attach 67285
Attaching to process 67285
/usr/src/gnu/usr.bin/gdb/libgdb/../../../../contrib/gdb/gdb/solib-svr4.c:1443:
internal-error: legacy_fetch_link_map_offsets called without legacy link_map support enabled.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n) n

/usr/src/gnu/usr.bin/gdb/libgdb/../../../../contrib/gdb/gdb/solib-svr4.c:1443:
internal-error: legacy_fetch_link_map_offsets called without legacy link_map support enabled.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Create a core file of GDB? (y or n) n
Reading symbols from /usr/bin/ex...(no debugging symbols found)...done.
Reading symbols from /lib/libncurses.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libncurses.so.6
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /libexec/ld-elf.so.1...(no debugging symbols found)...done.
Loaded symbols for /libexec/ld-elf.so.1
0x281c334f in read () from /lib/libc.so.6
(gdb) gcore core
Saved corefile core
(gdb) detach
Detaching from program: /usr/bin/ex, process 67285
(gdb)
% ls -lt|head
total 245054
-rw-r--r--   1 kaworu  guest    1959644 10 18 00:37 core

まとめ


まとめるとこんなカンジです。
途中でなにか聞かれてもとりあえず、n しておく。
% gdb
(gdb) attach pid
(gdb) gcore core
(gdb) detach

上記の動作をラップした gdb_gcore.sh なんてスクリプトもあります。
FreeBSDのソースツリーだと /usr/src/contrib/gdb/gdb/gdb_gcore.sh です。
このスクリプトは、gdbに上記のコマンドをヒアドキュメントで流し込んでいるだけのスクリプトです。

gcoreコマンドを使うことで、プロセスの動作を可能な限り、停止する時間を減らし、デバッグすることができます。

スポンサーリンク
スポンサーリンク
 
いつもシェア、ありがとうございます!


もっと情報を探しませんか?

関連記事

最近の記事

人気のページ

スポンサーリンク
 

過去ログ

2020 : 01 02 03 04 05 06 07 08 09 10 11 12
2019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12

サイト

Vim入門

C言語入門

C++入門

JavaScript/Node.js入門

Python入門

FreeBSD入門

Ubuntu入門

セキュリティ入門

パソコン自作入門

ブログ

トップ


プライバシーポリシー