Debug Hacks Conference 2009

1,452 views

Published on

Debug Hacks Conference 2009,
Ooiwa san,
April 23, 2009 at IIJ, Tokyo Japan

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,452
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Debug Hacks Conference 2009

  1. 1. 目次 <ul><li>RPM コマンドによるデバッグ </li></ul><ul><li>スクリプトのデバッグ </li></ul><ul><ul><li>アンケートで DebugHacks の内容以外を聞きたいとの要望が多くあった </li></ul></ul><ul><li>裏話 </li></ul>
  2. 2. RPM コマンドでデバッグ [1/3] <ul><li>問題 </li></ul><ul><ul><li>/var/spool/clientmqueue/ にファイルがどんどん溜まる </li></ul></ul><ul><li>解決 </li></ul><ul><ul><li>ファイルが作成されないようにしたい </li></ul></ul><ul><li>疑問 </li></ul><ul><ul><li>ディレクトリ、ファイルがいつ、だれによって作成されているかわからない </li></ul></ul>
  3. 3. RPM コマンドでデバッグ [2/3] <ul><li>こういうときには rpm コマンドを使う # rpm –qf /var/spool/clientmqueue/ sendmail-8.13.8-2.2AX </li></ul><ul><li>メールに関するファイルではないかと検討がつく </li></ul><ul><li>/var/spool/clientmqueue/ 配下のファイルを見る </li></ul>
  4. 4. /var/spool/clientmqueue/qfn0KJ2wo4005598 <ul><li>・・・・・・ </li></ul><ul><li>MDeferred: Connection refused by [127.0.0.1] </li></ul><ul><li>Fbs </li></ul><ul><li>$_root@localhost </li></ul><ul><li>${daemon_flags}c u </li></ul><ul><li>Sroot </li></ul><ul><li>[email_address] </li></ul><ul><li>MDeferred: Connection refused by [127.0.0.1] </li></ul><ul><li>C:root </li></ul><ul><li>rRFC822; root@NX_1-SRVB1-0 </li></ul><ul><li>RPFD:root </li></ul><ul><li>H?P?Return-Path: <<81>g> </li></ul><ul><li>H??Received: (from root@localhost) </li></ul><ul><li>by NX_1-SRVB1-0 (8.13.8/8.13.8/Submit) id n0KJ23Fk005118; </li></ul><ul><li>Wed, 21 Jan 2009 04:02:03 +0900 </li></ul><ul><li>H?D?Date: Wed, 21 Jan 2009 04:02:03 +0900 </li></ul><ul><li>H?x?Full-Name: root </li></ul><ul><li>H?M?Message-Id: <200901201902.n0KJ23Fk005118@NX_1-SRVB1-0> </li></ul><ul><li>H??To: root </li></ul><ul><li>H??From: logwatch </li></ul><ul><li>H??Subject: Logwatch for nx_1-srvb1-0 (Linux) </li></ul><ul><li>H??MIME-Version: 1.0 </li></ul><ul><li>H??Content-Transfer-Encoding: 7bit </li></ul><ul><li>H??Content-Type: text/plain; charset=&quot;iso-8859-1” </li></ul>logwatch
  5. 5. RPM コマンドでデバッグ [3/3] <ul><li>今度は rpm –ql </li></ul><ul><ul><li># rpm -ql logwatch | grep etc </li></ul></ul><ul><ul><li>/etc/cron.daily/0logwatch </li></ul></ul><ul><ul><li>/etc/logwatch </li></ul></ul><ul><ul><li>/etc/logwatch/conf </li></ul></ul><ul><ul><li>/etc/logwatch/conf/ignore.conf </li></ul></ul><ul><ul><li>/etc/logwatch/conf/logfiles </li></ul></ul><ul><ul><li>/etc/logwatch/conf/logwatch.conf </li></ul></ul><ul><ul><li>/etc/logwatch/conf/override.conf </li></ul></ul><ul><ul><li>/etc/logwatch/conf/services </li></ul></ul><ul><ul><li>/etc/logwatch/scripts </li></ul></ul>注目 cron に関するファイル (daily)
  6. 6. /var/spool/clientmqueue/ ファイルの日付 <ul><li># ls –lrt /var/log/clientmqueue </li></ul><ul><li>・・・・・・ </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 173 2009-02-09 04:02 dfn18J27Qj007008 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 2965 2009-02-10 04:02 dfn19J226V019060 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 690 2009-02-10 04:02 qfn19J226V019060 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 173 2009-02-10 04:02 dfn19J26Pc019414 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 890 2009-02-10 04:02 qfn19J26Pc019414 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 691 2009-02-11 04:02 qfn1AJ22iX015274 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 4521 2009-02-11 04:02 dfn1AJ22iX015274 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 173 2009-02-11 04:02 dfn1AJ2aNK017037 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 890 2009-02-11 04:02 qfn1AJ2aNK017037 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 690 2009-02-12 04:02 qfn1BJ22KW031220 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 2296 2009-02-12 04:02 dfn1BJ22KW031220 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 890 2009-02-12 04:02 qfn1BJ26cY031574 </li></ul><ul><li>-rw-rw---- 1 smmsp smmsp 173 2009-02-12 04:02 dfn1BJ26cY031574 </li></ul>
  7. 7. crontab を見てみる <ul><li># vi /etc/crontab </li></ul><ul><li>SHELL=/bin/bash </li></ul><ul><li>PATH=/sbin:/bin:/usr/sbin:/usr/bin </li></ul><ul><li>MAILTO=root </li></ul><ul><li>HOME=/ </li></ul><ul><li># run-parts </li></ul><ul><li>01 * * * * root run-parts /etc/cron.hourly </li></ul><ul><li>02 4 * * * root run-parts /etc/cron.daily </li></ul><ul><li>22 4 * * 0 root run-parts /etc/cron.weekly </li></ul><ul><li>42 4 1 * * root run-parts /etc/cron.monthly </li></ul>root 宛にメールしているの修正
  8. 8. ファイルを調べるコマンド <ul><li>ファイルを調べるには rpm コマンドが役立つ </li></ul>strace コマンドが便利 <ul><li>どのファイルを読み込んでいるかわからない ( 設定ファイルなど ) </li></ul>
  9. 9. スクリプトのデバッグ <ul><li>bash であれば– x オプションが便利 </li></ul><ul><li># cat test.sh </li></ul><ul><li>#!/bin/bash –x </li></ul><ul><li>echo test </li></ul><ul><li>exit </li></ul><ul><li># ./test.sh </li></ul><ul><li>+ echo test </li></ul><ul><li>test </li></ul><ul><li>+ exit </li></ul>
  10. 10. 裏話 [1/2] <ul><li>HACK#18 SysRq キーによるデバッグ方法 </li></ul><ul><ul><li>LKML にパッチ投稿 </li></ul></ul><ul><ul><li>sysrq キーのマスクが設定されていない </li></ul></ul><ul><li>HACK#32 アプリケーションのストール(無限ループ編) </li></ul><ul><ul><li>カーネルがストールするはずが、 tcpdump がストールしたので、急遽 tcpdump のストールを解析 </li></ul></ul><ul><li>HACK#34 カーネルパニック(リスト破壊編) </li></ul><ul><ul><li>kernel/posix-timers.c の clock_was_set() で発生するバグを元に作成 </li></ul></ul><ul><ul><li>小川さんと解析していたが、 clock_was_set() がストックカーネルから無くなったため、本のネタとしては使用しないことに </li></ul></ul>
  11. 12. アンケート結果 マジでデバッグをやって死にそうな位困った事ってなに? 順位 票数 HACK タイトル 著者 1 13 #30 malloc() や free() で障害が発生 島本 2 10 #27 #42 バックトレースが正しく表示されない CPU 負荷が高くなる不具合 島本 大岩 3 9 #28 配列の不正アクセスによるメモリ内容の破壊 大和 4 8 5 26 29 31 41 デバッガ( GDB )の基本的な使い方(その 1 ) SIGSEGV でアプリケーションが異常終了した ウォッチポイントを活用した不正メモリアクセスの検知 アプリケーションのストール(デッドロック編) 動作がスローダウンする不具合 吉岡 大和 大和 5 7 32 アプリケーションのストール(無限ループ編) 大岩 6 6 6 7 46 デバッガ( GDB )の基本的な使い方(その 2 ) 7. デバッガ( GDB )の基本的な使い方(その 3 ) Valgrind の使い方(実践編) 吉岡 吉岡 安部

×