SlideShare une entreprise Scribd logo
1  sur  24
Debug Hacks っぽいなにか もう、デバッガの使い方、でいいや つくらぐ #4 筑波大学 情報学群 情報科学類 Hirotaka Kawata (techno, @hktechno)
(つくらぐ恒例の?)自己紹介 ,[object Object]
純粋な茨城県民。
http://techno-st.net/ の中の人
セキュリティ&プログラミングキャンプ 2009 OS 組のチューターやってきた
変なものばっかり開発してる  (さらに、まともなものがない)
今日のお話 デバッグの基礎について話します 例の本みたいなことはやりません
軽い流れ ,[object Object]
デバッグの方法
デバッガって何か
デバッグしてみよう
まとめ
デバッグ (Debug) って何か バグを取り除くための “作業” です バグを発見したら、必ずデバッグしてるはずです ( ただし、放置したり、仕様と決め込んだ場合を除く )
デバッグを極めると? ソフトウェア開発にバグは付き物です バグは除去しなければなりません しかし、それに時間をかけていると... あたりまえだけど、よくない。
最終的には... こんなコードでも 解析できるようになるかもしれないw
IOCCC とかw
デバッグを極めれば... 最終的には ... 開発の効率が上がる!
デバッグの方法 普段から、 何気なく使っているデバッグ手法 いろいろあります。 たぶん、初心者に一番多いのが “ printf()  デバッグ ” と呼ばれる手法でしょう。
printf デバッグ 変数を、printf などを使って、 変数の中身などを出力させる手法。 プログラム中の怪しい場所に多数設置して、 変数の内容を監視する。 どこで、おかしくなったかがなんとなく分かる。 やってみましょう...
printf もいいけど... 確かに、これでもできるけど... 面倒。 効率が悪い。 文句なんていっぱいありすぎて(ry
もっと効率的に... デバッグにかける時間と手間を省きたいなら... デバッガを使おう! そして、極めよう! なわけで、本当はデバッグ全般について でもよかったのですが、 デバッガの使い方メインにすることにします。
デバッガ (Debugger) とは... デバッグを支援してくれるソフトウェア 実行中のプログラムの中身を見ることができる gdb(GNU Debugger) などが有名 VisualStudio などにも付属している printf  デバッグがハエたたきだとすると デバッガは、殺虫剤並の お手軽さと効果を持ち合わせた 最強兵器?!
デバッガでできること ,[object Object]
ソースを一行ずつ実行できる

Contenu connexe

Tendances

Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Takayuki Shimizukawa
 
GLT Vol.35 (My First Computer)
GLT Vol.35 (My First Computer)GLT Vol.35 (My First Computer)
GLT Vol.35 (My First Computer)do_aki
 
Unit Test
Unit TestUnit Test
Unit Testykhr
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用Takaya Funabiki
 

Tendances (7)

Bug撲滅作戦
Bug撲滅作戦Bug撲滅作戦
Bug撲滅作戦
 
Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門Pythonスタートアップ勉強会201109 python入門
Pythonスタートアップ勉強会201109 python入門
 
KOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WSKOGEI & KAIT Funnel WS
KOGEI & KAIT Funnel WS
 
Tensorflow
TensorflowTensorflow
Tensorflow
 
GLT Vol.35 (My First Computer)
GLT Vol.35 (My First Computer)GLT Vol.35 (My First Computer)
GLT Vol.35 (My First Computer)
 
Unit Test
Unit TestUnit Test
Unit Test
 
Android道第1回公開用
Android道第1回公開用Android道第1回公開用
Android道第1回公開用
 

En vedette

#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニングTomohiro Kumagai
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with HandoffYuichi Yoshida
 
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料アシアル株式会社
 
Uiテスト@yidev
Uiテスト@yidevUiテスト@yidev
Uiテスト@yidevYusuke Kita
 
Developing better debug_components
Developing better debug_componentsDeveloping better debug_components
Developing better debug_componentsTomoaki Imai
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
クライアント側でつかまえて
クライアント側でつかまえてクライアント側でつかまえて
クライアント側でつかまえてKaora Shibacaki
 

En vedette (7)

#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
#yidev 横浜 iPhone 勉強会 - 第16回 オープニング
 
Getting started with Handoff
Getting started with HandoffGetting started with Handoff
Getting started with Handoff
 
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
HTML5×Monacaプログラミング教育事例セミナー・ワークショップ資料
 
Uiテスト@yidev
Uiテスト@yidevUiテスト@yidev
Uiテスト@yidev
 
Developing better debug_components
Developing better debug_componentsDeveloping better debug_components
Developing better debug_components
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
クライアント側でつかまえて
クライアント側でつかまえてクライアント側でつかまえて
クライアント側でつかまえて
 

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

Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」tokyorgirls
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方Yuichi Kato
 
Creators'night#3今井
Creators'night#3今井 Creators'night#3今井
Creators'night#3今井 Daisuke Imai
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1Atsushi Tadokoro
 
センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。yjono Seino
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDDTakuto Wada
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Hiro Yoshioka
 
Cocoaアプリに無理矢理プラグインを導入する入門
Cocoaアプリに無理矢理プラグインを導入する入門Cocoaアプリに無理矢理プラグインを導入する入門
Cocoaアプリに無理矢理プラグインを導入する入門京大 マイコンクラブ
 
20160422_lombokについて
20160422_lombokについて20160422_lombokについて
20160422_lombokについてHidaka Kazutaka
 
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーションコロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーションMasayuki Uehara
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようcch-robo
 
概観テキストマイニング
概観テキストマイニング概観テキストマイニング
概観テキストマイニングtod esking
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門Atsushi Tadokoro
 
How to use SOAP interface of debbugs #tokyodebian
How to use SOAP interface of debbugs #tokyodebianHow to use SOAP interface of debbugs #tokyodebian
How to use SOAP interface of debbugs #tokyodebiankenhys
 
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編Takafumi Inamori
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)nomuken
 

Similaire à Debug Hacks - 第4回つくらぐ勉強会 (20)

Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
Tokyo.R女子部発表スライド「Rではじめるデータ解析の超基礎」
 
プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方プログラミング初心者の壁の越え方
プログラミング初心者の壁の越え方
 
java-ja TDD 2nd
java-ja TDD 2ndjava-ja TDD 2nd
java-ja TDD 2nd
 
Creators'night#3今井
Creators'night#3今井 Creators'night#3今井
Creators'night#3今井
 
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
BNN CAMP vol.3  インタラクションデザインの現在―プログラミング初心者のためのopenFrameworks入門 1
 
センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010Sourcecode Reading Workshop2010
Sourcecode Reading Workshop2010
 
Cocoaアプリに無理矢理プラグインを導入する入門
Cocoaアプリに無理矢理プラグインを導入する入門Cocoaアプリに無理矢理プラグインを導入する入門
Cocoaアプリに無理矢理プラグインを導入する入門
 
20160422_lombokについて
20160422_lombokについて20160422_lombokについて
20160422_lombokについて
 
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーションコロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
コロナ時代を生き抜く(?) ひとつ上の Slack "コラ"ボレーション
 
DartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみようDartPad+CodePenで、Flutterを体験してみよう
DartPad+CodePenで、Flutterを体験してみよう
 
概観テキストマイニング
概観テキストマイニング概観テキストマイニング
概観テキストマイニング
 
DevOps、その前に
DevOps、その前にDevOps、その前に
DevOps、その前に
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
 
How to use SOAP interface of debbugs #tokyodebian
How to use SOAP interface of debbugs #tokyodebianHow to use SOAP interface of debbugs #tokyodebian
How to use SOAP interface of debbugs #tokyodebian
 
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編SIG-Audio準備会#2 オーディオツールの作り方 超入門編
SIG-Audio準備会#2 オーディオツールの作り方 超入門編
 
LT#6 Taskete
LT#6 TasketeLT#6 Taskete
LT#6 Taskete
 
Debug Hacks Night
Debug Hacks NightDebug Hacks Night
Debug Hacks Night
 
オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)オブジェクト指向勉強会(基礎)
オブジェクト指向勉強会(基礎)
 

Plus de University of Tsukuba Linux User Group

USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会University of Tsukuba Linux User Group
 
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会University of Tsukuba Linux User Group
 
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会University of Tsukuba Linux User Group
 

Plus de University of Tsukuba Linux User Group (12)

Gentoo Linuxの紹介
Gentoo Linuxの紹介Gentoo Linuxの紹介
Gentoo Linuxの紹介
 
C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1C言語の課題を(エクストリームに)解こう #1
C言語の課題を(エクストリームに)解こう #1
 
monoqloの麻雀講座
monoqloの麻雀講座monoqloの麻雀講座
monoqloの麻雀講座
 
Hello,World Crazy!!
Hello,World Crazy!!Hello,World Crazy!!
Hello,World Crazy!!
 
カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)カーネルモジュールプログラミング超入門 #1(仮)
カーネルモジュールプログラミング超入門 #1(仮)
 
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
linuxで動画キャプチャ。 - 第4回つくらぐ勉強会
 
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
USBからLinuxを起動してみよう! - 第4回つくらぐ勉強会
 
うぶんちゅ! - 第4回つくらぐ勉強会
うぶんちゅ! - 第4回つくらぐ勉強会うぶんちゅ! - 第4回つくらぐ勉強会
うぶんちゅ! - 第4回つくらぐ勉強会
 
カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会カーネルをmakeしよう! - 第4回つくらぐ勉強会
カーネルをmakeしよう! - 第4回つくらぐ勉強会
 
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
シンガポールのインターネット検閲事情 (LT) - 第4回つくらぐ勉強会
 
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
楽しい怪しいシェルスクリプト - 第4回つくらぐ勉強会
 
ばっしゅ! (LT) - 第4回つくらぐ勉強会
ばっしゅ! (LT) - 第4回つくらぐ勉強会ばっしゅ! (LT) - 第4回つくらぐ勉強会
ばっしゅ! (LT) - 第4回つくらぐ勉強会
 

Dernier

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 

Dernier (7)

ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 

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