天天看點

apache2設定core dump檔案(debian7)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

<code>我的部落格已遷移到xdoujiang.com請去那邊和我交流</code>

<code>一、基礎環境</code>

<code>1、發行版本</code>

<code>uname</code> <code>-a</code>

<code>Linux 10.1.10.117 3.2.0-4-amd64 </code><code>#1 SMP Debian 3.2.68-1+deb7u1 x86_64 GNU/Linux</code>

<code>2、安裝apache2</code>

<code>apt-get -y </code><code>install</code> <code>apache2-mpm-prefork</code>

<code>3、建立目錄和賦予權限</code>

<code>mkdir</code> <code>/opt/game/core</code> <code>-p</code>

<code>chown</code> <code>www-data </code><code>/opt/game/core/</code> <code>-R</code>

<code>二、打開core dump功能</code>

<code>1、檢視core dump是否打開</code>

<code>ulimit</code> <code>-c</code>

<code>0</code>

<code>ulimit</code> <code>-a</code>

<code>core </code><code>file</code> <code>size          (blocks, -c) 0</code>

<code>參數說明</code>

<code>-c 表示核心轉儲檔案的大小限制 零表示未打開core dump功能 設定core檔案的最大值 機關為區塊。 </code>

<code>-a 顯示目前所有的資源限制</code>

<code>2、修改配置(機關KB)</code>

<code>cat</code> <code>/etc/security/limits</code><code>.conf</code>

<code>*                soft    core             2048000</code>

<code>*                hard    core             2048000</code>

<code>3、生效</code>

<code>ulimit</code> <code>-c 2048000</code>

<code>4、檢查</code>

<code>core </code><code>file</code> <code>size          (blocks, -c) 2048000</code>

<code>2048000</code>

<code>二、修改core檔案儲存的路徑</code>

<code>1、臨時修改</code>

<code>1)core檔案儲存在</code><code>/opt/game/core</code><code>目錄下</code>

<code>echo</code> <code>"/opt/game/core/%e.core.%s.%p.%h.%t"</code> <code>&gt; </code><code>/proc/sys/kernel/core_pattern</code>

<code>2)生成的core檔案名将會變成core.pid</code>

<code>echo</code> <code>1 &gt; </code><code>/proc/sys/kernel/core_uses_pid</code>

<code>2、永久修改 </code>

<code>1)在配置最後增加2行</code>

<code>cat</code> <code>/etc/sysctl</code><code>.conf</code>

<code>kernel.core_pattern = </code><code>/opt/game/core/</code><code>%e.core.%s.%p.%h.%t</code>

<code>kernel.core_uses_pid = 1</code>

<code>2)永久生效</code>

<code>sysctl -p</code>

<code>3)參數說明</code>

<code>%e  executable filename (without path prefix)                                         </code><code>#dump的檔案名</code>

<code>%p  PID of dumped process, as seen </code><code>in</code> <code>the PID namespace </code><code>in</code> <code>which</code> <code>the process resides  </code><code>#dump的程序PID</code>

<code>%t  </code><code>time</code> <code>of dump, expressed as seconds since the Epoch,1970-01-01 00:00:00 +0000     </code><code>#轉儲時刻(由1970年1月1日起計的秒數)</code>

<code>%h  </code><code>hostname</code> <code>(same as nodename returned by </code><code>uname</code><code>(2))                                  </code><code>#主機名</code>

<code>%s  number of signal causing dump                                                     </code><code>#coredump的信号 </code>

<code>三、apache2設定</code>

<code>1、再</code><code>/etc/apache2/apache2</code><code>.conf最後添加1行</code>

<code>cat</code> <code>/etc/apache2/apache2</code><code>.conf</code>

<code>CoreDumpDirectory </code><code>/opt/game/core</code>

<code>2、參數說明</code>

<code>文法:CoreDumpDirectory directory-path</code>

<code>這個指令用來控制Apache使用的核心轉儲目錄,該轉儲目錄預設位于“ServerRoot”下。因為這個目錄通常對于運作伺服器的使用者是不可寫的,</code>

<code>核心轉儲一般也不會寫入内容。如果你在調試中需要核心轉儲,那麼你可以用這個指令來指定另外一個目錄。</code>

<code>3、重新開機apache2服務</code>

<code>/etc/init</code><code>.d</code><code>/apache2</code> <code>restart</code>

<code>4、殺死apache2程序</code>

<code>先檢視下apache2程序</code>

<code>root       2342  0.0  1.2  71568  2916 ?        Ss   02:29   0:00 </code><code>/usr/sbin/apache2</code> <code>-k start</code>

<code>www-data   2344  0.0  0.8  71592  2132 ?        S    02:29   0:00 </code><code>/usr/sbin/apache2</code> <code>-k start</code>

<code>www-data   2345  0.0  0.8  71592  2132 ?        S    02:29   0:00 </code><code>/usr/sbin/apache2</code> <code>-k start</code>

<code>www-data   2348  0.0  0.8  71592  2132 ?        S    02:29   0:00 </code><code>/usr/sbin/apache2</code> <code>-k start</code>

<code>www-data   2349  0.0  0.8  71592  2132 ?        S    02:29   0:00 </code><code>/usr/sbin/apache2</code> <code>-k start</code>

<code>www-data   2350  0.0  0.8  71592  2132 ?        S    02:29   0:00 </code><code>/usr/sbin/apache2</code> <code>-k start</code>

<code>kill</code> <code>-11 2342</code>

<code>kill</code> <code>-11 2344</code>

<code>kill</code> <code>-11 2345</code>

<code>kill</code> <code>-11 2348</code>

<code>kill</code> <code>-11 2349</code>

<code>kill</code> <code>-11 2350</code>

<code>信号11說明</code>

<code>11) SIGSEGV 試圖通路未配置設定給自己的記憶體, 或試圖往沒有寫權限的記憶體位址寫資料.</code>

<code>5、檢視到已經有core産生了</code>

<code>ll </code><code>/opt/game/core/</code>

<code>-rw------- 1 root     root     2596864 May 21 02:38 apache2.core.11.2342.10.1.10.117.1432190336</code>

<code>-rw------- 1 www-data www-data 2621440 May 21 02:38 apache2.core.11.2344.10.1.10.117.1432190338</code>

<code>-rw------- 1 www-data www-data 2621440 May 21 02:38 apache2.core.11.2345.10.1.10.117.1432190339</code>

<code>-rw------- 1 www-data www-data 2621440 May 21 02:39 apache2.core.11.2348.10.1.10.117.1432190344</code>

<code>-rw------- 1 www-data www-data 2621440 May 21 02:39 apache2.core.11.2349.10.1.10.117.1432190346</code>

<code>-rw------- 1 www-data www-data 2621440 May 21 02:39 apache2.core.11.2350.10.1.10.117.1432190349</code>

<code>6、使用gdb程式</code>

<code>1)先安裝gdb</code>

<code>apt-get -y </code><code>install</code> <code>gdb</code>

<code>2)使用gdb程式檢視</code>

<code>gdb apache2 -core </code><code>/opt/game/core/apache2</code><code>.core.11.2342.10.1.10.117.1432190336</code>

<code>GNU gdb (GDB) 7.4.1-debian</code>

<code>Copyright (C) 2012 Free Software Foundation, Inc.</code>

<code>License GPLv3+: GNU GPL version 3 or later &lt;http:</code><code>//gnu</code><code>.org</code><code>/licenses/gpl</code><code>.html&gt;</code>

<code>This is </code><code>free</code> <code>software: you are </code><code>free</code> <code>to change and redistribute it.</code>

<code>There is NO WARRANTY, to the extent permitted by law.  Type </code><code>"show copying"</code>

<code>and </code><code>"show warranty"</code> <code>for</code> <code>details.</code>

<code>This GDB was configured as </code><code>"x86_64-linux-gnu"</code><code>.</code>

<code>For bug reporting instructions, please see:</code>

<code>&lt;http:</code><code>//www</code><code>.gnu.org</code><code>/software/gdb/bugs/</code><code>&gt;...</code>

<code>Reading symbols from </code><code>/usr/sbin/apache2</code><code>...(no debugging symbols found)...</code><code>done</code><code>.</code>

<code>[New LWP 2342]</code>

<code>warning: Can't </code><code>read</code> <code>pathname </code><code>for</code> <code>load map: Input</code><code>/output</code> <code>error.</code>

<code>[Thread debugging using libthread_db enabled]</code>

<code>Using host libthread_db library </code><code>"/lib/x86_64-linux-gnu/libthread_db.so.1"</code><code>.</code>

<code>Core was generated by `</code><code>/usr/sbin/apache2</code> <code>-k start'.</code>

<code>Program terminated with signal 11, Segmentation fault.</code>

<code>#0  0x00007f1d26736433 in select () from /lib/x86_64-linux-gnu/libc.so.6</code>

<code>四、參考文章</code>

<code>http:</code><code>//www</code><code>.cnblogs.com</code><code>/hazir/p/linxu_core_dump</code><code>.html </code>

<code>http:</code><code>//man7</code><code>.org</code><code>/linux/man-pages/man5/core</code><code>.5.html</code>

<code>http:</code><code>//www</code><code>.cyberciti.biz</code><code>/tips/configure-apache-web-server-for-core-dump</code><code>.html</code>

本文轉自 xdoujiang 51CTO部落格,原文連結:http://blog.51cto.com/7938217/1671716,如需轉載請自行聯系原作者