狠狠撸

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

More Related Content

Debug Hacks Conference 2009

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