Submit Search
デバッグ戦略
3 likes
2,087 views
Masahiro Wakame
1 of 39
Download now
Downloaded 31 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
More Related Content
PDF
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Loïc Knuchel
PPTX
Java весна 2013 лекция 6
Technopark
PDF
JQuery
koji lin
PDF
Jeffri ferdinand panjaitan 17.01.132 (ti4 c)
jeffriferdinand
PPT
Java
Antonio Furone
PDF
1- Sourcecode Array
Fajar Baskoro
PPT
Шаблоны проектирования 2
Constantin Kichinsky
PDF
Java & le pattern matching
Didier Plaindoux
Comprendre la programmation fonctionnelle, Blend Web Mix le 02/11/2016
Loïc Knuchel
Java весна 2013 лекция 6
Technopark
JQuery
koji lin
Jeffri ferdinand panjaitan 17.01.132 (ti4 c)
jeffriferdinand
Java
Antonio Furone
1- Sourcecode Array
Fajar Baskoro
Шаблоны проектирования 2
Constantin Kichinsky
Java & le pattern matching
Didier Plaindoux
What's hot
(14)
PDF
An introduction to functional programming with Go [redux]
Eleanor McHugh
PDF
python-geohex
Ryo Aita
PPTX
20150415 csharp6.0
Ricardo González
PDF
Boost.勉強会#4 Boost.Proto
fjnl
PDF
Reactive x
myposter GmbH
DOCX
All set1
Sagar Yeole
DOC
Java
Dany Ianko
PDF
Programación funcional en Haskell
Roberto Bonvallet
DOCX
EJEMPLOS DESARROLLADOS
Darwin Durand
PPT
Tugas pw [10]
guest272e50
PPT
Tugas pw [10]
guestf689463
PPT
Spring Framework Orm Di
ahwkong2000
PDF
Most Common JavaScript Mistakes
Yoann Gotthilf
PDF
FP is coming... le 19/05/2016
Loïc Knuchel
An introduction to functional programming with Go [redux]
Eleanor McHugh
python-geohex
Ryo Aita
20150415 csharp6.0
Ricardo González
Boost.勉強会#4 Boost.Proto
fjnl
Reactive x
myposter GmbH
All set1
Sagar Yeole
Java
Dany Ianko
Programación funcional en Haskell
Roberto Bonvallet
EJEMPLOS DESARROLLADOS
Darwin Durand
Tugas pw [10]
guest272e50
Tugas pw [10]
guestf689463
Spring Framework Orm Di
ahwkong2000
Most Common JavaScript Mistakes
Yoann Gotthilf
FP is coming... le 19/05/2016
Loïc Knuchel
Ad
Viewers also liked
(8)
PPTX
Le rapport gallois 2012
ARXOM
PDF
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
Masahiro Wakame
PDF
俺とお前とGoogleware
Masahiro Wakame
PPT
Memes
Giorgos Philippis
PDF
JavaScript再入門
Masahiro Wakame
PDF
JavaScript 再入門2
Masahiro Wakame
PDF
TypeScript 独習会
Masahiro Wakame
PDF
TypeScript Hands-on
Masahiro Wakame
Le rapport gallois 2012
ARXOM
CEATEC Glassware(Google Glassアプリ)開発の指南と開発事例
Masahiro Wakame
俺とお前とGoogleware
Masahiro Wakame
Memes
Giorgos Philippis
JavaScript再入門
Masahiro Wakame
JavaScript 再入門2
Masahiro Wakame
TypeScript 独習会
Masahiro Wakame
TypeScript Hands-on
Masahiro Wakame
Ad
More from Masahiro Wakame
(20)
PDF
GoCon2016 spring 自作Webフレームワーク uconを作った話
Masahiro Wakame
PDF
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
PDF
TypeScriptは明日から使うべき
Masahiro Wakame
PDF
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
PDF
Google Glass XE17版
Masahiro Wakame
PDF
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Masahiro Wakame
PDF
コンパイラ指向ReVIEW
Masahiro Wakame
PDF
20ヶ月を取り戻す Dart flight school
Masahiro Wakame
PDF
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
Masahiro Wakame
PDF
ReVIEW & CI - ChefでCI環境構築
Masahiro Wakame
PDF
Firefox OS勉強会 2nd TypeScript+AngularJS
Masahiro Wakame
PDF
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Masahiro Wakame
PDF
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
PDF
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Masahiro Wakame
PDF
TypeScript 勉強会
Masahiro Wakame
PDF
わかめモナ化LT
Masahiro Wakame
PDF
NFC app launcher
Masahiro Wakame
PDF
函館IKA Eclipse活用術
Masahiro Wakame
PDF
函館IKA ICS開発情報
Masahiro Wakame
GoCon2016 spring 自作Webフレームワーク uconを作った話
Masahiro Wakame
GoCon 2015 Summer GoのASTをいじくって新しいツールを作る
Masahiro Wakame
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
TypeScriptは明日から使うべき
Masahiro Wakame
TypeScript 型定義ファイルのある開発 TypeScript勉強会 VSハッカソン倶楽部
Masahiro Wakame
Google Glass XE17版
Masahiro Wakame
Google Glassでできること XE12版 最新開発情報 Mirror API & GDK
Masahiro Wakame
コンパイラ指向ReVIEW
Masahiro Wakame
20ヶ月を取り戻す Dart flight school
Masahiro Wakame
Google Glassでできること XE11版 最新開発情報 Mirror API & GDK
Masahiro Wakame
ReVIEW & CI - ChefでCI環境構築
Masahiro Wakame
Firefox OS勉強会 2nd TypeScript+AngularJS
Masahiro Wakame
AngularJS+TypeScript - AngularJS 1周年記念勉強会
Masahiro Wakame
Buildinsider OFFLINE TypeScriptの基礎から実践・利用事例まで
Masahiro Wakame
Datastoreへのアクセスを楽してMemcacheアクセスに置き換えるライブラリ作った
Masahiro Wakame
TypeScript 勉強会
Masahiro Wakame
わかめモナ化LT
Masahiro Wakame
NFC app launcher
Masahiro Wakame
函館IKA Eclipse活用術
Masahiro Wakame
函館IKA ICS開発情報
Masahiro Wakame
デバッグ戦略
1.
(@v vakame)
Android 2011 8 25
2.
•
• • http://www.slideshare.net/vvakame/debugging-strategy 2011 8 25
3.
2011
8 25
4.
2011
8 25
5.
… 2011
8 25
6.
•
• initA() initB() init() A, B public • 2 • ( ) • • … 2011 8 25
7.
/**
* bitmap . * * @param bitmapArrays */ static void dot1PixelA(Bitmap[][] bitmapArrays) { for (int i = 0; i < bitmapArrays.length; i++) { for for (int j = 0; j < bitmapArrays[i].length; i++) { bitmapArrays[j][i].setPixel(0, 0, Color.RED); } } } /** * bitmap . * * @param bitmapArrays */ static void dot1PixelB(Bitmap[][] bitmapArrays) { for (Bitmap[] bitmapArray : bitmapArrays) { for (Bitmap bitmap : bitmapArray) { for-each bitmap.setPixel(0, 0, Color.RED); } } } 2011 8 25
8.
/**
* bitmap . * * @param bitmapArrays */ static void dot1PixelA(Bitmap[][] bitmapArrays) { for (int i = 0; i < bitmapArrays.length; i++) { for for (int j = 0; j < bitmapArrays[i].length; i++) { bitmapArrays[j][i].setPixel(0, 0, Color.RED); } } } /** * bitmap . * * @param bitmapArrays */ static void dot1PixelB(Bitmap[][] bitmapArrays) { for (Bitmap[] bitmapArray : bitmapArrays) { for (Bitmap bitmap : bitmapArray) { for-each bitmap.setPixel(0, 0, Color.RED); } } } 2011 8 25
9.
Bitmap[][] bitmapArrays =
new Bitmap[10][10]; for (int i = 0; i < bitmapArrays.length; i++) { for (int j = 0; j < bitmapArrays[i].length; j++) { bitmapArrays[i][j] = Bitmap.createBitmap(3, 3, Config.ARGB_8888); } } … 2011 8 25
10.
ADT
2011/08/25 rev12 2011 8 25
11.
2011
8 25
12.
•
• • • null 2011 8 25
13.
• LogCat 2011
8 25
14.
• L07 @Override
L08 public void onCreate(Bundle savedInstanceState) { L09 super.onCreate(savedInstanceState); L10 setContentView(R.layout.main); L11 L12 try { L13 throw new NullPointerException(); L14 } catch (Exception e1) { L15 try { L16 throw new IllegalArgumentException(e1); L17 } catch (Exception e2) { L18 try { L19 throw new IllegalStateException(e2); L20 } catch (Exception e3) { L21 throw new RuntimeException(e3); L22 } L23 } L24 } L25 } Caused 2011 8 25
15.
•
L08 @Override L09 public void onCreate(Bundle savedInstanceState) { L10 super.onCreate(savedInstanceState); L11 setContentView(R.layout.main); L12 requestWindowFeature(Window.FEATURE_NO_TITLE); L13 } L11 L12 2011 8 25
16.
L22
… L09 @Override L10 public void onCreate(Bundle savedInstanceState) { L11 super.onCreate(savedInstanceState); L12 L13 LinearLayout layout1 = new LinearLayout(this); L14 LinearLayout layout2 = new LinearLayout(this); L15 LinearLayout layout3 = new LinearLayout(this); L16 Button button = new Button(this); L17 L18 layout1.addView(layout2); L19 L20 layout2.addView(layout1); layout3.addView(button); layout1 → layout2 → layout1 L21 L22 setContentView(layout1); layout1 → layout2 → layout3 … L23 } 2011 8 25
17.
“
” • ( ω ´) • • • ← • …… …… • … orz ← 2011 8 25
18.
“
” • • • • … • 2011 8 25
19.
void sort() {
List<String> list = new ArrayList<String>(); list.add("cupcake"); list.add(null); list.add("donuts"); list.add(null); list.add("froyo"); Collections.sort(list, new Comparator<String>() { @Override public int compare(String str1, String str2) { if (str1 == null) { return -1; } return str1.compareTo(str2); } }); Log.d("Debug", list.toString()); } NullPointerException … LogCat … 2011 8 25
20.
2011
8 25
21.
str2
null String#compareTo(String) null … 2011 8 25
22.
NPE(NullPointerException) 2011
8 25
23.
2011
8 25
24.
…
public class Util { /** * 2 1 . * @param list1 1 * @param list2 2 * @return 1 */ public static List<Object> merge(List<Object> list1, List<Object> list2) { list1.addAll(list2); return list1; } /** * 1 . * @param lists * @return 1 */ public static List<Object> merge(List<?>... lists) { List<Object> result = new ArrayList<Object>(); for (List<?> list : lists) { result.addAll(list); } return result; } } 2011 8 25
25.
public void test()
{ List<Object> list1 = new ArrayList<Object>(); list1.add("a"); list1.add("b"); List<Object> list2 = new ArrayList<Object>(); list2.add(1); list2.add(2); List<Object> list3 = new ArrayList<Object>(); list3.add(1.25); list3.add(2.5); List<Object> merged1 = Util.merge(list1, list2); List<Object> merged2 = Util.merge(list1, list2, list3); assertEquals(merged1.size(), 4); assertEquals(merged1.get(0), "a"); assertEquals(merged1.get(1), "b"); assertEquals(merged1.get(2), 1); assertEquals(merged1.get(3), 2); assertEquals(merged2.size(), 6); assertEquals(merged2.get(0), "a"); assertEquals(merged2.get(1), "b"); assertEquals(merged2.get(2), 1); assertEquals(merged2.get(3), 2); assertEquals(merged2.get(4), 1.25); assertEquals(merged2.get(5), 2.5); } 2011 8 25
26.
public void test()
{ List<Object> list1 = new ArrayList<Object>(); list1.add("a"); list1.add("b"); List<Object> list2 = new ArrayList<Object>(); list2.add(1); list2.add(2); List<Object> list3 = new ArrayList<Object>(); list3.add(1.25); list3.add(2.5); List<Object> merged1 = Util.merge(list1, list2); List<Object> merged2 = Util.merge(list1, list2, list3); assertEquals(merged1.size(), 4); assertEquals(merged1.get(0), "a"); assertEquals(merged1.get(1), "b"); assertEquals(merged1.get(2), 1); assertEquals(merged1.get(3), 2); size 8 assertEquals(merged2.size(), 6); assertEquals(merged2.get(0), "a"); assertEquals(merged2.get(1), "b"); assertEquals(merged2.get(2), 1); assertEquals(merged2.get(3), 2); assertEquals(merged2.get(4), 1.25); assertEquals(merged2.get(5), 2.5); } 2011 8 25
27.
Debug As ... 2011
8 25
28.
• F8
• F5 1 ( ) • F6 1 ( ) • F7 2011 8 25
29.
8
… 2011 8 25
30.
(
) 2011 8 25
31.
•
• , , • Variables • • 2011 8 25
32.
…
¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨... 2011 8 25
33.
→Inspect 2011
8 25
34.
2011
8 25
35.
•
• • • • • 2011 8 25
36.
2011
8 25
37.
OpenGL 2011
8 25
38.
OpenGL http://t.co/bet4051 2011
8 25
39.
2011
8 25
Download