Debug Hacks - 第4回つくらぐ勉強会

1,308 views

Published on

筑波大学 Linux User Group (つくらぐ)
http://www.tsukuba-linux.org/

Published in: Education
  • Be the first to comment

Debug Hacks - 第4回つくらぐ勉強会

  1. 1. Debug Hacks っぽいなにか もう、デバッガの使い方、でいいや つくらぐ #4 筑波大学 情報学群 情報科学類 Hirotaka Kawata (techno, @hktechno)
  2. 2. (つくらぐ恒例の?)自己紹介 <ul><li>techno, @hktechno, てくのたん </li><ul><li>筑波大学 情報学群 情報科学類 1年目
  3. 3. 純粋な茨城県民。
  4. 4. http://techno-st.net/ の中の人
  5. 5. セキュリティ&プログラミングキャンプ 2009 OS 組のチューターやってきた
  6. 6. 変なものばっかり開発してる (さらに、まともなものがない) </li></ul></ul>
  7. 7. 今日のお話 デバッグの基礎について話します 例の本みたいなことはやりません
  8. 8. 軽い流れ <ul><li>デバッグって何か
  9. 9. デバッグの方法
  10. 10. デバッガって何か
  11. 11. デバッグしてみよう
  12. 12. まとめ </li></ul>
  13. 13. デバッグ (Debug) って何か バグを取り除くための “作業” です バグを発見したら、必ずデバッグしてるはずです ( ただし、放置したり、仕様と決め込んだ場合を除く )
  14. 14. デバッグを極めると? ソフトウェア開発にバグは付き物です バグは除去しなければなりません しかし、それに時間をかけていると... あたりまえだけど、よくない。
  15. 15. 最終的には... こんなコードでも 解析できるようになるかもしれないw
  16. 16. IOCCC とかw
  17. 17. デバッグを極めれば... 最終的には ... 開発の効率が上がる!
  18. 18. デバッグの方法 普段から、 何気なく使っているデバッグ手法 いろいろあります。 たぶん、初心者に一番多いのが “ printf() デバッグ ” と呼ばれる手法でしょう。
  19. 19. printf デバッグ 変数を、printf などを使って、 変数の中身などを出力させる手法。 プログラム中の怪しい場所に多数設置して、 変数の内容を監視する。 どこで、おかしくなったかがなんとなく分かる。 やってみましょう...
  20. 20. printf もいいけど... 確かに、これでもできるけど... 面倒。 効率が悪い。 文句なんていっぱいありすぎて(ry
  21. 21. もっと効率的に... デバッグにかける時間と手間を省きたいなら... デバッガを使おう! そして、極めよう! なわけで、本当はデバッグ全般について でもよかったのですが、 デバッガの使い方メインにすることにします。
  22. 22. デバッガ (Debugger) とは... デバッグを支援してくれるソフトウェア 実行中のプログラムの中身を見ることができる gdb(GNU Debugger) などが有名 VisualStudio などにも付属している printf デバッグがハエたたきだとすると デバッガは、殺虫剤並の お手軽さと効果を持ち合わせた 最強兵器?!
  23. 23. デバッガでできること <ul><li>プログラムの実行を一時停止できる
  24. 24. ソースを一行ずつ実行できる
  25. 25. 実行中に変数の内容を見ることができる
  26. 26. スタックの内容を覗いたりできる </li></ul>とにかく、すごい。 デバッグを使わなきゃ、損するだけ!
  27. 27. とりあえず、使ってみようよ! 今回は... gdb(GNU Debugger) with Emacs を使います。 Emacsと一緒に使うことに意義がある! (らしい、吉岡さん談)
  28. 28. gdbの基本 - 1 gdbを快適に使うには、デバッグ情報を コンパイラに吐かせる必要があります gcc -g オプションをつけることで、 デバッグ情報を付加できます。
  29. 29. gdbの基本 - 2 コマンドラインに $ gdb a.out とか入力すると、gdbが起動します a.out をデバッグします
  30. 30. Emacs と一緒に使おう! Emacsを起動します ソースを開いて、適当にコンパイル。 M-x gdbすると...
  31. 31. gdb の使い方... といっても、大量にコマンドがあって... 超基本的なもの。 <ul><li>run (r): 実行
  32. 32. break (b): ブレークポイントを設定
  33. 33. continue (c): ステップ実行を抜ける
  34. 34. print (p): 変数の表示
  35. 35. あとは、ぐぐれ! </li></ul>
  36. 36. デバッグしてみましょ! いくつかの、被験対象を用意しました。 時間の限りデバッグします。 若干、ヤバいものも w
  37. 37. まとめ デバッガはすごい! デバッガを使おう! デバッグを極めると、いいことがいっぱい! 変な言語覚える前に、デバッグ鍛えろ!
  38. 38. おすすめの本とか ・Debug Hacks ・GDBハンドブック どっちも、オライリーです。 Debug Hacksは日本人が書いてます。
  39. 39. 長かったですが (たぶん) ご清聴ありがとうございました。

×