今王必欲致士 先従隗始 - little debugging principles

106
今王必欲致士 先従隗始 Little debugging principles Yugui (園田裕貴) スケールアウト株式会社 / Akasaka.rb 2009423日木曜日

Upload: yuki-sonoda

Post on 24-May-2015

1.511 views

Category:

Technology


1 download

DESCRIPTION

at Debug hacks conference 2009

TRANSCRIPT

Page 1: 今王必欲致士 先従隗始 - little debugging principles

今王必欲致士先従隗始

Little debugging principlesYugui (園田裕貴)

スケールアウト株式会社 / Akasaka.rb

2009年4月23日木曜日

Page 2: 今王必欲致士 先従隗始 - little debugging principles

Yugui2009年4月23日木曜日

Page 3: 今王必欲致士 先従隗始 - little debugging principles

スケールアウト㈱

2009年4月23日木曜日

Page 4: 今王必欲致士 先従隗始 - little debugging principles

Akasaka.rb2009年4月23日木曜日

Page 5: 今王必欲致士 先従隗始 - little debugging principles

内容2009年4月23日木曜日

Page 6: 今王必欲致士 先従隗始 - little debugging principles

共有2009年4月23日木曜日

Page 7: 今王必欲致士 先従隗始 - little debugging principles

先従隗始

2009年4月23日木曜日

Page 8: 今王必欲致士 先従隗始 - little debugging principles

問2009年4月23日木曜日

Page 9: 今王必欲致士 先従隗始 - little debugging principles

12009年4月23日木曜日

Page 10: 今王必欲致士 先従隗始 - little debugging principles

デバッグしない

2009年4月23日木曜日

Page 11: 今王必欲致士 先従隗始 - little debugging principles

22009年4月23日木曜日

Page 12: 今王必欲致士 先従隗始 - little debugging principles

データの流れ

2009年4月23日木曜日

Page 13: 今王必欲致士 先従隗始 - little debugging principles

対象2009年4月23日木曜日

Page 14: 今王必欲致士 先従隗始 - little debugging principles

User land

2009年4月23日木曜日

Page 15: 今王必欲致士 先従隗始 - little debugging principles

高 水準2009年4月23日木曜日

Page 16: 今王必欲致士 先従隗始 - little debugging principles

反復可能

2009年4月23日木曜日

Page 17: 今王必欲致士 先従隗始 - little debugging principles

難2009年4月23日木曜日

Page 18: 今王必欲致士 先従隗始 - little debugging principles

hardware

2009年4月23日木曜日

Page 19: 今王必欲致士 先従隗始 - little debugging principles

一次キャッシュ

2009年4月23日木曜日

Page 20: 今王必欲致士 先従隗始 - little debugging principles

並列2009年4月23日木曜日

Page 21: 今王必欲致士 先従隗始 - little debugging principles

thread2009年4月23日木曜日

Page 22: 今王必欲致士 先従隗始 - little debugging principles

非 同期2009年4月23日木曜日

Page 23: 今王必欲致士 先従隗始 - little debugging principles

シグナル

2009年4月23日木曜日

Page 24: 今王必欲致士 先従隗始 - little debugging principles

バイナリ

2009年4月23日木曜日

Page 25: 今王必欲致士 先従隗始 - little debugging principles

printf2009年4月23日木曜日

Page 26: 今王必欲致士 先従隗始 - little debugging principles

事例2009年4月23日木曜日

Page 27: 今王必欲致士 先従隗始 - little debugging principles

Ruby2009年4月23日木曜日

Page 28: 今王必欲致士 先従隗始 - little debugging principles

Rails2009年4月23日木曜日

Page 29: 今王必欲致士 先従隗始 - little debugging principles

始2009年4月23日木曜日

Page 30: 今王必欲致士 先従隗始 - little debugging principles

Debug2009年4月23日木曜日

Page 31: 今王必欲致士 先従隗始 - little debugging principles

段階2009年4月23日木曜日

Page 32: 今王必欲致士 先従隗始 - little debugging principles

再現2009年4月23日木曜日

Page 33: 今王必欲致士 先従隗始 - little debugging principles

特定2009年4月23日木曜日

Page 34: 今王必欲致士 先従隗始 - little debugging principles

修正2009年4月23日木曜日

Page 35: 今王必欲致士 先従隗始 - little debugging principles

再現2009年4月23日木曜日

Page 36: 今王必欲致士 先従隗始 - little debugging principles

ログ2009年4月23日木曜日

Page 37: 今王必欲致士 先従隗始 - little debugging principles

例2009年4月23日木曜日

Page 38: 今王必欲致士 先従隗始 - little debugging principles

Exception Notification

2009年4月23日木曜日

Page 39: 今王必欲致士 先従隗始 - little debugging principles

Rails2009年4月23日木曜日

Page 40: 今王必欲致士 先従隗始 - little debugging principles

web app

2009年4月23日木曜日

Page 41: 今王必欲致士 先従隗始 - little debugging principles

エラー2009年4月23日木曜日

Page 42: 今王必欲致士 先従隗始 - little debugging principles

メール2009年4月23日木曜日

Page 43: 今王必欲致士 先従隗始 - little debugging principles

入力2009年4月23日木曜日

Page 44: 今王必欲致士 先従隗始 - little debugging principles

セッション2009年4月23日木曜日

Page 45: 今王必欲致士 先従隗始 - little debugging principles

スタックトレース

2009年4月23日木曜日

Page 46: 今王必欲致士 先従隗始 - little debugging principles

結論2009年4月23日木曜日

Page 47: 今王必欲致士 先従隗始 - little debugging principles

ログ重要

2009年4月23日木曜日

Page 48: 今王必欲致士 先従隗始 - little debugging principles

本題2009年4月23日木曜日

Page 49: 今王必欲致士 先従隗始 - little debugging principles

特定2009年4月23日木曜日

Page 50: 今王必欲致士 先従隗始 - little debugging principles

易2009年4月23日木曜日

Page 51: 今王必欲致士 先従隗始 - little debugging principles

自明2009年4月23日木曜日

Page 52: 今王必欲致士 先従隗始 - little debugging principles

方法2009年4月23日木曜日

Page 53: 今王必欲致士 先従隗始 - little debugging principles

書かない

2009年4月23日木曜日

Page 54: 今王必欲致士 先従隗始 - little debugging principles

BDD2009年4月23日木曜日

Page 55: 今王必欲致士 先従隗始 - little debugging principles

describe MailingList, '#create_message_for' do fixtures :mailing_lists

before do @email = stub(:email) @message = stub(:message) end

# ... 略

it "returns nil if the resolver can't resolve the email as a message for the list" do @resolver.stub!(:resolve).and_return(nil) @ml.create_message_for(@email).should be_nil endend

2009年4月23日木曜日

Page 56: 今王必欲致士 先従隗始 - little debugging principles

仕様2009年4月23日木曜日

Page 57: 今王必欲致士 先従隗始 - little debugging principles

必要最低限

2009年4月23日木曜日

Page 58: 今王必欲致士 先従隗始 - little debugging principles

現実2009年4月23日木曜日

Page 59: 今王必欲致士 先従隗始 - little debugging principles

Legacy Code

2009年4月23日木曜日

Page 60: 今王必欲致士 先従隗始 - little debugging principles

WEwLC

2009年4月23日木曜日

Page 61: 今王必欲致士 先従隗始 - little debugging principles

テストがない

2009年4月23日木曜日

Page 62: 今王必欲致士 先従隗始 - little debugging principles

何故必要か

2009年4月23日木曜日

Page 63: 今王必欲致士 先従隗始 - little debugging principles

→2009年4月23日木曜日

Page 64: 今王必欲致士 先従隗始 - little debugging principles

仕様記述

2009年4月23日木曜日

Page 65: 今王必欲致士 先従隗始 - little debugging principles

不明2009年4月23日木曜日

Page 66: 今王必欲致士 先従隗始 - little debugging principles

削除2009年4月23日木曜日

Page 67: 今王必欲致士 先従隗始 - little debugging principles

動作2009年4月23日木曜日

Page 68: 今王必欲致士 先従隗始 - little debugging principles

不要2009年4月23日木曜日

Page 69: 今王必欲致士 先従隗始 - little debugging principles

エラー2009年4月23日木曜日

Page 70: 今王必欲致士 先従隗始 - little debugging principles

テストケース

2009年4月23日木曜日

Page 71: 今王必欲致士 先従隗始 - little debugging principles

Debug?2009年4月23日木曜日

Page 72: 今王必欲致士 先従隗始 - little debugging principles

CodeReading

2009年4月23日木曜日

Page 73: 今王必欲致士 先従隗始 - little debugging principles

表明2009年4月23日木曜日

Page 74: 今王必欲致士 先従隗始 - little debugging principles

DbC2009年4月23日木曜日

Page 75: 今王必欲致士 先従隗始 - little debugging principles

例2009年4月23日木曜日

Page 76: 今王必欲致士 先従隗始 - little debugging principles

#define ARY_SET_LEN(ary, n) do { \ if (ARY_EMBED_P(ary)) { \ ARY_SET_EMBED_LEN(ary, n); \ } \ else { \ ARY_SET_HEAP_LEN(ary, n); \ } \ assert(RARRAY_LEN(ary) == n); \} while (0)

2009年4月23日木曜日

Page 77: 今王必欲致士 先従隗始 - little debugging principles

#define ARY_SET_HEAP_LEN(ary, n) do { \ assert(!ARY_EMBED_P(ary)); \ RARRAY(ary)->as.heap.len = n; \} while (0)

2009年4月23日木曜日

Page 78: 今王必欲致士 先従隗始 - little debugging principles

2009年4月23日木曜日

Page 79: 今王必欲致士 先従隗始 - little debugging principles

敗北2009年4月23日木曜日

Page 80: 今王必欲致士 先従隗始 - little debugging principles

敗北2009年4月23日木曜日

Page 81: 今王必欲致士 先従隗始 - little debugging principles

what→ who

2009年4月23日木曜日

Page 82: 今王必欲致士 先従隗始 - little debugging principles

what2009年4月23日木曜日

Page 83: 今王必欲致士 先従隗始 - little debugging principles

core2009年4月23日木曜日

Page 84: 今王必欲致士 先従隗始 - little debugging principles

gdb -c2009年4月23日木曜日

Page 85: 今王必欲致士 先従隗始 - little debugging principles

attach2009年4月23日木曜日

Page 86: 今王必欲致士 先従隗始 - little debugging principles

二分探索

2009年4月23日木曜日

Page 87: 今王必欲致士 先従隗始 - little debugging principles

tracer?

2009年4月23日木曜日

Page 88: 今王必欲致士 先従隗始 - little debugging principles

who2009年4月23日木曜日

Page 89: 今王必欲致士 先従隗始 - little debugging principles

データの流れ

2009年4月23日木曜日

Page 90: 今王必欲致士 先従隗始 - little debugging principles

who killedcook robin?

2009年4月23日木曜日

Page 91: 今王必欲致士 先従隗始 - little debugging principles

誰がデータを壊したか

2009年4月23日木曜日

Page 92: 今王必欲致士 先従隗始 - little debugging principles

12009年4月23日木曜日

Page 93: 今王必欲致士 先従隗始 - little debugging principles

自明2009年4月23日木曜日

Page 94: 今王必欲致士 先従隗始 - little debugging principles

22009年4月23日木曜日

Page 95: 今王必欲致士 先従隗始 - little debugging principles

up2009年4月23日木曜日

Page 96: 今王必欲致士 先従隗始 - little debugging principles

32009年4月23日木曜日

Page 97: 今王必欲致士 先従隗始 - little debugging principles

watch2009年4月23日木曜日

Page 98: 今王必欲致士 先従隗始 - little debugging principles

cond2009年4月23日木曜日

Page 99: 今王必欲致士 先従隗始 - little debugging principles

データ抽出

2009年4月23日木曜日

Page 100: 今王必欲致士 先従隗始 - little debugging principles

define2009年4月23日木曜日

Page 101: 今王必欲致士 先従隗始 - little debugging principles

define rb_classname call classname($arg0) rb_p $ print *(struct RClass*)$arg0end

# .gdbinit

2009年4月23日木曜日

Page 102: 今王必欲致士 先従隗始 - little debugging principles

シンボル

2009年4月23日木曜日

Page 103: 今王必欲致士 先従隗始 - little debugging principles

debug.c2009年4月23日木曜日

Page 104: 今王必欲致士 先従隗始 - little debugging principles

敗北2009年4月23日木曜日

Page 105: 今王必欲致士 先従隗始 - little debugging principles

試行2009年4月23日木曜日

Page 106: 今王必欲致士 先従隗始 - little debugging principles

終2009年4月23日木曜日