SlideShare a Scribd company logo
1 of 36
Download to read offline
Chrome で Javascript デバッグ!
          まず半歩♪
自己紹介
ノジマ ユウジ  @yuka2py
●
    株式会社フォーエンキー 代表
●
    Android/iPhoneアプリ開発。
    Webシステム開発、デザインや印刷全般など。
    Web関係は...ここ最近はスマホ系三昧♪
●
    好きな言語:Python (*´Д`*)、Javascript
    しかし一番書いているのは PHP...
●
    グラフィックデザインもやります。
●
    趣味:オサレ♪(若干かわいい系 (`・ω・´)キリ
●
    弱点:お嫁ちゃん
【本日の目標】


alert() デバッグからの卒業。
Alert()デバッグとは?
●
    Alertで任意の変数の値を表示させ、
    プログラムの問題点を確認する手法
    (PHPならvar_dumpやecho)
●
    問題点
    ●
        Alertした所でプログラムが中断する
    ●
        変数を確認するためのコードを書く必要がある
    ●
        中断しても、確認できる範囲が限定的
    ●
        ソースコードに直接書くので、解除や再設定が面倒
    ●
        ループで使っちゃうと半泣き
本日のお品書き
●
    デベロッパーコンソールでのエラーの見かた
●
    コンソールへのログ出力
●
    ブレークポイントを使ってみる
    ●
        変数の状態が確認できる
    ●
        コールスタックが確認できる
●
    おまけ


         ちょっぴり紹介程度です。 (。-д-。)ゞヘヘ…
デベロッパーコンソールでの
   エラーの見かた
致命的なエラーはエラー表示される
             プログラムに
             シンタックス
             エラーなど致
             命的な問題が
             あると、画面
             右下にエラー
             が表示される
      クリック
コンソールのエラー詳細表示
●
       のエラー表示をクリックしたら、コン
    ソールが開いてエラーの詳細が確認できる

                エラーの詳細
エラー個所へジャンプ
●
    エラー詳細情報の中に、リンクがある。
    このリンクからエラー個所へジャンプできる




                    クリック
ジャンプした先でコードを確認・修正
                   該当箇所の
                   コードが表示
                   される。
    エラーとおぼしき場所に、   ここでは、
     マーク等も出たりする
                   無名関数を
                   閉じるブレス
                   が抜けてた。
コンソールへのログ出力
ログ出力は止まらない
●
    変数の値を確認したい時、
    Alertで変数値を確認する方法では、
    処理が中断して困ることがある。
    ●
        例えば、MouseMove で何か処理していて、
        その逐次変化する値を確認したい時など
●
    そこで...

           console.log(value);
console.log() を使うと...
●
    プログラム中の好きな場所で、
    コンソールにログを出力させることができる
●
    alert と違って実行が止まらない
    ●
        連続的な値の変化を見たい時など便利
●
    例えば↓のような感じで使う

        jQuery('body').mousemove(function(e) {
            console.log(e.pageX, e.pageY);
        });
ブレークポイントを使ってみる
ブレークポイントとは?
●
    プログラム中の好きな場所で、
    プログラムの実行を一時停止できます
●
    ブレーク中には...
    ●
        スコープ変数の状態を確認できる
    ●
        コールスタック(呼び出し階層)を確認できる
    ●
        再開、ステップオーバー・イン・アウト

 ⇒これらを用いて、プログラムの論理エラーを
  調査するのに非常に強力に活用できる
ブレークポイントを設定する
●
    ブレークしたい行の行番号をクリック
    マークが付いたらOK
ブレークしてみる
●
    ブレークポイントを通過するように実行すると
    ブレークポイントでプログラムは自動停止




       BPで止まる
ブレーク中は…




停止中...
変数の状態が確認できる


      ローカル変数



     クロージャ変数



変数の値はもちろん、
 オブジェクトなら
 その中身も見れる




     グローバル変数
コールスタックが確認できる

 上から順に、
 直近の呼び出し




各行クリックすると、
 その呼び出し場所に
    ジャンプ



   ジャンプしたら、
   ジャンプした先の
   ローカル変数の
    状態が見れる
コールスタックとは
●
    プログラムの呼び出し階層のこと
●
    現在位置から、関数やメソッドの呼び出しを遡
    れる
    ●
        あくまでも呼び出された階層なので、全てのプログ
        ラムの実行順では無いことには注意
●
    ブレークしたポイントまでに呼び出された関数
    やメソッドが分かるので…
    ●
        想定外の関数の動作を見つけたり、
    ●
        思わぬ実行経路を見つけたりできる。
ブレークからの再開方法
●
    【再開】ブレークした箇所から再開
●
    【ステップオーバー】その行を実行し、次の行に進む
●
    【ステップイン】その行を実行し、次の行に進む。
          関数があればその中に入る
●
    【ステップアウト】現在の関数を抜けるまで実行を進める
●
    また、BPを一時的に全てスキップするように無効化
    することも出来ます。
    ステップオーバー    ステップイン   ステップアウト


     再開
                            BPの一時無効化
論理エラーを探し出す
●
    「論理エラー」とは、プログラムはエラーにな
    らないが、意図した動作をしない状態
    ●
        ワリと良くあるし、ワリとやっかいな状態
    ●
        論理エラーの発見には、経験&コツが必要だが...
●
    プログラムのブレークは非常に強力な武器に。
    ●
        おかしくなっていると思うところに、
        ブレークポイントを設定
    ●
        関連する変数の値を確認
    ●
        呼び出し元からの引数がオカシイときは、
        コールスタックを遡って、確認
おまけ
他にもある console API

console.log(object[, object, ...])   引数の内容をコンソールに表
                                     示する。

console.dir(object[, object, ...])   引数に指定されたオブジェク
                                     トのプロパティ一覧を表示す
                                     る。

console.time(name)                   引数名のタイマーを内部で作
                                     成する。

console.timeEnd(name)                console.time(name) で生成さ
                                     れたタイマーを停止して経過
                                     時間を Console パネルに表示
                                     します.
圧縮コードの整形
●
    圧縮されたコードも
    コードビュー下側の
    { } マークをクリック
    すると...
圧縮コードの整形
●
    キレイに整形!
●
    この状態でリロード
    もOK
●
    ブレークポイントも
    張れる
●
    圧縮されたJSファイ
    ルもコードを追いや
    すくなりますね!
多彩なブレークポイント(1)
                                 ブレークポイント作成
●
    条件付きブレークポ                     して、右クリック

    イント
    ●
        任意の条件式がtrueを
        返すときだけブレーク
        する
                                  条件式を入力
    ●
        作り方
        1.ブレークポイントを
          作成してから、右ク
          リック
        2.Edit Breakpoint... か
          ら、条件式を入力する
多彩なブレークポイント(2)
●
    DOMブレークポイント
    ●
        任意の要素ツリーや属性の変更、ノードの削除時に
        ブレークする。(要素を右クリックして指定)
●
    XHR ブレークポイント
    ●
        XHR送信時にブレークする。送信先が特定の文字
        列を含む時だけブレークすることも可能
●
    Event Listenerブレークポイント
    ●
        キー入力、マウス、タイマー(setTimeout)などの
        イベント発生時に自動でブレーク
デベロッパーツールの設定も少しだけ




結構色々
 できる         ここから
               開く
General タブ




キャッシュやJSの無効化




再描画された要素に枠を付けて
視覚化する
User agent タブ
User agent のオーバーライドやデバイスの
表示解像度のシミュレーションなどが行えるので、
Fire mobile シミュレータっぽいこともできる。
ドックの位置の変更
●
    ドック右下のアイコンを
    クリックして切り替える
    ●
        クリック毎に変わる
    ●
        長押しで3種類切り替わる
        –   下側
        –   右側
                         クリックまたは
        –   個別ウィンドウ      長押しで切り替え
    ●
        サイズ調整できるので、
        右側にしてレスポンシブ
        の確認にちょっと便利
まとめ
●
    alert() デバッグを置き換える
    ●
        ある時点の変数の値を確認したい時には、
        ブレークポイントを使ぉう!
    ●
        ある条件だけブレークしたい時には、
        条件付きブレークポイント!
●
    止まったら嫌な時とか、連続した値を確認した
    い時は、console.log() を使う
●
    他にも便利な機能がいっぱいあるので少しずつ
    覚えると吉!
参考
資料を書くにあたって参考にさせて頂いたサイト
●
    Google Chrome Developer Tools入門
    http://ss-o.net/event/20120212/
●
    Google Chrome版Firebug:
    デベロッパーツール取扱説明書
    http://gihyo.jp/dev/feature/01/devtools
●
    chromeデベロッパーツールでjavascriptのデ
    バッグをする -node.jsもあるでよ-
    http://d.hatena.ne.jp/shim0mura/20111231/1325357395
ありがとうございました!


  m(o^ω^o)m

More Related Content

What's hot

JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てandroid sola
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
coma - creator’s talk session: Code - openFrameworks
coma - creator’s talk session: Code - openFrameworkscoma - creator’s talk session: Code - openFrameworks
coma - creator’s talk session: Code - openFrameworksAtsushi Tadokoro
 
カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidカスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidandroid sola
 
私の欲しい Android 端末
私の欲しい Android 端末私の欲しい Android 端末
私の欲しい Android 端末android sola
 
JavaScript And Debug
JavaScript And DebugJavaScript And Debug
JavaScript And Debuguupaa
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門Atsushi Tadokoro
 

What's hot (9)

Beginning iPhone Vol2
Beginning iPhone Vol2Beginning iPhone Vol2
Beginning iPhone Vol2
 
JCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放てJCROM で Android の「真の力」を解き放て
JCROM で Android の「真の力」を解き放て
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
coma - creator’s talk session: Code - openFrameworks
coma - creator’s talk session: Code - openFrameworkscoma - creator’s talk session: Code - openFrameworks
coma - creator’s talk session: Code - openFrameworks
 
カスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroidカスタムROM開発者の視点から見たAndroid
カスタムROM開発者の視点から見たAndroid
 
Symfony2#5 LT
Symfony2#5 LTSymfony2#5 LT
Symfony2#5 LT
 
私の欲しい Android 端末
私の欲しい Android 端末私の欲しい Android 端末
私の欲しい Android 端末
 
JavaScript And Debug
JavaScript And DebugJavaScript And Debug
JavaScript And Debug
 
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
デジタルアートセミナー#2 openFrameworksで学ぶ、 クリエイティブ・コーディング Session 1: openFrameworks入門
 

Viewers also liked

CSSにもオブジェクト指向を - OOCSSことはじめ
CSSにもオブジェクト指向を - OOCSSことはじめCSSにもオブジェクト指向を - OOCSSことはじめ
CSSにもオブジェクト指向を - OOCSSことはじめNisei Kimura
 
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)Horiguchi Seito
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門Yuji Nojima
 
HTML5時代の技術の恩恵を受けるには
HTML5時代の技術の恩恵を受けるにはHTML5時代の技術の恩恵を受けるには
HTML5時代の技術の恩恵を受けるにはSho Ito
 
WebフォントとSVGフォント
WebフォントとSVGフォントWebフォントとSVGフォント
WebフォントとSVGフォントJun Fujisawa
 
集合知プログラミング 第6章 ドキュメントとフィルタリング~draft
集合知プログラミング 第6章 ドキュメントとフィルタリング~draft集合知プログラミング 第6章 ドキュメントとフィルタリング~draft
集合知プログラミング 第6章 ドキュメントとフィルタリング~draftKenji Koshikawa
 
ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性Renji Yoneda
 
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法Ryujiro Yamamoto
 
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015Sociomedia
 
Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)
Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)
Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)Web Accessibility Infrastructure Committee (WAIC)
 
レコメンデーション(協調フィルタリング)の基礎
レコメンデーション(協調フィルタリング)の基礎レコメンデーション(協調フィルタリング)の基礎
レコメンデーション(協調フィルタリング)の基礎Katsuhiro Takata
 
Photoshopで効率よくデザインしよう!
Photoshopで効率よくデザインしよう!Photoshopで効率よくデザインしよう!
Photoshopで効率よくデザインしよう!Marie Suenaga
 
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろうnico0927
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説Cherry Pie Web
 
ウェブデザインの本質と、構成要素
ウェブデザインの本質と、構成要素ウェブデザインの本質と、構成要素
ウェブデザインの本質と、構成要素vanillate cocoa
 
今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャMayu Kimura
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツevol-ni
 
Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門樽八 仲川
 
ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門Hayato Mizuno
 
Webライティング11のルール
Webライティング11のルールWebライティング11のルール
Webライティング11のルールTsutomu Sogitani
 

Viewers also liked (20)

CSSにもオブジェクト指向を - OOCSSことはじめ
CSSにもオブジェクト指向を - OOCSSことはじめCSSにもオブジェクト指向を - OOCSSことはじめ
CSSにもオブジェクト指向を - OOCSSことはじめ
 
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
悩まないコーディングをしよう! OOCSS,SMACSSを用いた、読みやすくてメンテナブルなCSS設計(Sass対応)
 
WordPressプラグイン作成入門
WordPressプラグイン作成入門WordPressプラグイン作成入門
WordPressプラグイン作成入門
 
HTML5時代の技術の恩恵を受けるには
HTML5時代の技術の恩恵を受けるにはHTML5時代の技術の恩恵を受けるには
HTML5時代の技術の恩恵を受けるには
 
WebフォントとSVGフォント
WebフォントとSVGフォントWebフォントとSVGフォント
WebフォントとSVGフォント
 
集合知プログラミング 第6章 ドキュメントとフィルタリング~draft
集合知プログラミング 第6章 ドキュメントとフィルタリング~draft集合知プログラミング 第6章 ドキュメントとフィルタリング~draft
集合知プログラミング 第6章 ドキュメントとフィルタリング~draft
 
ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性ディレクターからみたMovable Type + PowerCMSの優位性
ディレクターからみたMovable Type + PowerCMSの優位性
 
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法
テスト環境から本番環境へ、URLが異なる環境にWordPressを移行する方法
 
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
シロクマ本に学ぶエクスペリエンスのための手技法 by 篠原 稔和 - presentation from IA CAMP 2015
 
Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)
Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)
Webアクセシビリティの標準規格「JIS X 8341-3:2010」準拠のための試験方法(最新版)
 
レコメンデーション(協調フィルタリング)の基礎
レコメンデーション(協調フィルタリング)の基礎レコメンデーション(協調フィルタリング)の基礎
レコメンデーション(協調フィルタリング)の基礎
 
Photoshopで効率よくデザインしよう!
Photoshopで効率よくデザインしよう!Photoshopで効率よくデザインしよう!
Photoshopで効率よくデザインしよう!
 
-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう-入門- enchant.js でゲームを作ろう
-入門- enchant.js でゲームを作ろう
 
.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説.htaccessによるリダイレクト徹底解説
.htaccessによるリダイレクト徹底解説
 
ウェブデザインの本質と、構成要素
ウェブデザインの本質と、構成要素ウェブデザインの本質と、構成要素
ウェブデザインの本質と、構成要素
 
今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ今必要なCSSアーキテクチャ
今必要なCSSアーキテクチャ
 
コーディングが上達するコツ
コーディングが上達するコツコーディングが上達するコツ
コーディングが上達するコツ
 
Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門
 
ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門ノンプログラマーのためのjQuery入門
ノンプログラマーのためのjQuery入門
 
Webライティング11のルール
Webライティング11のルールWebライティング11のルール
Webライティング11のルール
 

Similar to Chromeでjavascriptデバッグ!まず半歩♪

Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!yoshikawa_t
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.nextyoshikawa_t
 
基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode ContractsYoshifumi Kawai
 
今日から始める LotusScript - Domino クラスライブラリの使い方
今日から始める LotusScript - Domino クラスライブラリの使い方今日から始める LotusScript - Domino クラスライブラリの使い方
今日から始める LotusScript - Domino クラスライブラリの使い方Takeshi Yoshida
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
Windows phone & windows 8で見えてくるメトロの世界
Windows phone & windows 8で見えてくるメトロの世界Windows phone & windows 8で見えてくるメトロの世界
Windows phone & windows 8で見えてくるメトロの世界Makoto Nishimura
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacksHiro Yoshioka
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成Akineko Shimizu
 
今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)
今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)
今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)Takeshi Yoshida
 
Android OpenGL HandsOn
Android OpenGL HandsOnAndroid OpenGL HandsOn
Android OpenGL HandsOnIkuo Tansho
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてcom044
 
TotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチTotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチRWSJapan
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, CodereadingHiro Yoshioka
 
JavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミングJavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミングTakashi Aoe
 
初めてのCPUを作ってみた
初めてのCPUを作ってみた初めてのCPUを作ってみた
初めてのCPUを作ってみたEric Sartre
 

Similar to Chromeでjavascriptデバッグ!まず半歩♪ (20)

Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!Chrome Developer Toolsを使いこなそう!
Chrome Developer Toolsを使いこなそう!
 
Chrome DevTools.next
Chrome DevTools.nextChrome DevTools.next
Chrome DevTools.next
 
Devtools.next
Devtools.nextDevtools.next
Devtools.next
 
基礎からのCode Contracts
基礎からのCode Contracts基礎からのCode Contracts
基礎からのCode Contracts
 
今日から始める LotusScript - Domino クラスライブラリの使い方
今日から始める LotusScript - Domino クラスライブラリの使い方今日から始める LotusScript - Domino クラスライブラリの使い方
今日から始める LotusScript - Domino クラスライブラリの使い方
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
Windows phone & windows 8で見えてくるメトロの世界
Windows phone & windows 8で見えてくるメトロの世界Windows phone & windows 8で見えてくるメトロの世界
Windows phone & windows 8で見えてくるメトロの世界
 
Programming camp 2010 debug hacks
Programming camp 2010 debug hacksProgramming camp 2010 debug hacks
Programming camp 2010 debug hacks
 
Lt 110205
Lt 110205Lt 110205
Lt 110205
 
Surface SDK オリエンテーション
Surface SDK オリエンテーションSurface SDK オリエンテーション
Surface SDK オリエンテーション
 
とあるFlashの自動生成
とあるFlashの自動生成とあるFlashの自動生成
とあるFlashの自動生成
 
今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)
今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)
今日から始める LotusScript - Domino クラスライブラリの使い方(Version 1.1)
 
Android OpenGL HandsOn
Android OpenGL HandsOnAndroid OpenGL HandsOn
Android OpenGL HandsOn
 
Xcode tips
Xcode tipsXcode tips
Xcode tips
 
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動についてUE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
UE4プログラマー勉強会 in 大阪 -エンジンの内部挙動について
 
TotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチTotalViewを使った代表的なバグに対するアプローチ
TotalViewを使った代表的なバグに対するアプローチ
 
Programming camp 2008, Codereading
Programming camp 2008, CodereadingProgramming camp 2008, Codereading
Programming camp 2008, Codereading
 
Android gameprogramming
Android gameprogrammingAndroid gameprogramming
Android gameprogramming
 
JavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミングJavaFXでマルチタッチプログラミング
JavaFXでマルチタッチプログラミング
 
初めてのCPUを作ってみた
初めてのCPUを作ってみた初めてのCPUを作ってみた
初めてのCPUを作ってみた
 

More from Yuji Nojima

今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会Yuji Nojima
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!Yuji Nojima
 
Wp プラグインapiから理解するword press.share
Wp プラグインapiから理解するword press.shareWp プラグインapiから理解するword press.share
Wp プラグインapiから理解するword press.shareYuji Nojima
 
WordPressプラグイン Jetpack って何だ?!
WordPressプラグイン Jetpack って何だ?!WordPressプラグイン Jetpack って何だ?!
WordPressプラグイン Jetpack って何だ?!Yuji Nojima
 
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜Yuji Nojima
 
WordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみたWordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみたYuji Nojima
 
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクションYuji Nojima
 

More from Yuji Nojima (7)

今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会今日から使える! Sass/compass ゆるめ勉強会
今日から使える! Sass/compass ゆるめ勉強会
 
最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!最強オブジェクト指向言語 JavaScript 再入門!
最強オブジェクト指向言語 JavaScript 再入門!
 
Wp プラグインapiから理解するword press.share
Wp プラグインapiから理解するword press.shareWp プラグインapiから理解するword press.share
Wp プラグインapiから理解するword press.share
 
WordPressプラグイン Jetpack って何だ?!
WordPressプラグイン Jetpack って何だ?!WordPressプラグイン Jetpack って何だ?!
WordPressプラグイン Jetpack って何だ?!
 
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
エンジニアの為のWordPress入門 〜WordPressはWebAppプラットフォームです〜
 
WordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみたWordPress プラグイン Infinite Scroll を試してみた
WordPress プラグイン Infinite Scroll を試してみた
 
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション
簡単!低コスト!楽しい!レスポンシブ デザイン ディレクション
 

Recently uploaded

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価sugiuralab
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールsugiuralab
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 

Recently uploaded (8)

Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 
プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価プレイマットのパターン生成支援ツールの評価
プレイマットのパターン生成支援ツールの評価
 
プレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツールプレイマットのパターン生成支援ツール
プレイマットのパターン生成支援ツール
 
PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 

Chromeでjavascriptデバッグ!まず半歩♪

  • 1. Chrome で Javascript デバッグ! まず半歩♪
  • 2. 自己紹介 ノジマ ユウジ  @yuka2py ● 株式会社フォーエンキー 代表 ● Android/iPhoneアプリ開発。 Webシステム開発、デザインや印刷全般など。 Web関係は...ここ最近はスマホ系三昧♪ ● 好きな言語:Python (*´Д`*)、Javascript しかし一番書いているのは PHP... ● グラフィックデザインもやります。 ● 趣味:オサレ♪(若干かわいい系 (`・ω・´)キリ ● 弱点:お嫁ちゃん
  • 4. Alert()デバッグとは? ● Alertで任意の変数の値を表示させ、 プログラムの問題点を確認する手法 (PHPならvar_dumpやecho) ● 問題点 ● Alertした所でプログラムが中断する ● 変数を確認するためのコードを書く必要がある ● 中断しても、確認できる範囲が限定的 ● ソースコードに直接書くので、解除や再設定が面倒 ● ループで使っちゃうと半泣き
  • 5. 本日のお品書き ● デベロッパーコンソールでのエラーの見かた ● コンソールへのログ出力 ● ブレークポイントを使ってみる ● 変数の状態が確認できる ● コールスタックが確認できる ● おまけ ちょっぴり紹介程度です。 (。-д-。)ゞヘヘ…
  • 7. 致命的なエラーはエラー表示される プログラムに シンタックス エラーなど致 命的な問題が あると、画面 右下にエラー が表示される クリック
  • 8. コンソールのエラー詳細表示 ●    のエラー表示をクリックしたら、コン ソールが開いてエラーの詳細が確認できる エラーの詳細
  • 9. エラー個所へジャンプ ● エラー詳細情報の中に、リンクがある。 このリンクからエラー個所へジャンプできる クリック
  • 10. ジャンプした先でコードを確認・修正 該当箇所の コードが表示 される。 エラーとおぼしき場所に、 ここでは、 マーク等も出たりする 無名関数を 閉じるブレス が抜けてた。
  • 12. ログ出力は止まらない ● 変数の値を確認したい時、 Alertで変数値を確認する方法では、 処理が中断して困ることがある。 ● 例えば、MouseMove で何か処理していて、 その逐次変化する値を確認したい時など ● そこで... console.log(value);
  • 13. console.log() を使うと... ● プログラム中の好きな場所で、 コンソールにログを出力させることができる ● alert と違って実行が止まらない ● 連続的な値の変化を見たい時など便利 ● 例えば↓のような感じで使う jQuery('body').mousemove(function(e) { console.log(e.pageX, e.pageY); });
  • 15. ブレークポイントとは? ● プログラム中の好きな場所で、 プログラムの実行を一時停止できます ● ブレーク中には... ● スコープ変数の状態を確認できる ● コールスタック(呼び出し階層)を確認できる ● 再開、ステップオーバー・イン・アウト  ⇒これらを用いて、プログラムの論理エラーを   調査するのに非常に強力に活用できる
  • 16. ブレークポイントを設定する ● ブレークしたい行の行番号をクリック マークが付いたらOK
  • 17. ブレークしてみる ● ブレークポイントを通過するように実行すると ブレークポイントでプログラムは自動停止 BPで止まる
  • 19. 変数の状態が確認できる ローカル変数 クロージャ変数 変数の値はもちろん、 オブジェクトなら その中身も見れる グローバル変数
  • 20. コールスタックが確認できる 上から順に、 直近の呼び出し 各行クリックすると、 その呼び出し場所に ジャンプ ジャンプしたら、 ジャンプした先の ローカル変数の 状態が見れる
  • 21. コールスタックとは ● プログラムの呼び出し階層のこと ● 現在位置から、関数やメソッドの呼び出しを遡 れる ● あくまでも呼び出された階層なので、全てのプログ ラムの実行順では無いことには注意 ● ブレークしたポイントまでに呼び出された関数 やメソッドが分かるので… ● 想定外の関数の動作を見つけたり、 ● 思わぬ実行経路を見つけたりできる。
  • 22. ブレークからの再開方法 ● 【再開】ブレークした箇所から再開 ● 【ステップオーバー】その行を実行し、次の行に進む ● 【ステップイン】その行を実行し、次の行に進む。       関数があればその中に入る ● 【ステップアウト】現在の関数を抜けるまで実行を進める ● また、BPを一時的に全てスキップするように無効化 することも出来ます。 ステップオーバー ステップイン ステップアウト 再開 BPの一時無効化
  • 23. 論理エラーを探し出す ● 「論理エラー」とは、プログラムはエラーにな らないが、意図した動作をしない状態 ● ワリと良くあるし、ワリとやっかいな状態 ● 論理エラーの発見には、経験&コツが必要だが... ● プログラムのブレークは非常に強力な武器に。 ● おかしくなっていると思うところに、 ブレークポイントを設定 ● 関連する変数の値を確認 ● 呼び出し元からの引数がオカシイときは、 コールスタックを遡って、確認
  • 25. 他にもある console API console.log(object[, object, ...]) 引数の内容をコンソールに表 示する。 console.dir(object[, object, ...]) 引数に指定されたオブジェク トのプロパティ一覧を表示す る。 console.time(name) 引数名のタイマーを内部で作 成する。 console.timeEnd(name) console.time(name) で生成さ れたタイマーを停止して経過 時間を Console パネルに表示 します.
  • 26. 圧縮コードの整形 ● 圧縮されたコードも コードビュー下側の { } マークをクリック すると...
  • 27. 圧縮コードの整形 ● キレイに整形! ● この状態でリロード もOK ● ブレークポイントも 張れる ● 圧縮されたJSファイ ルもコードを追いや すくなりますね!
  • 28. 多彩なブレークポイント(1) ブレークポイント作成 ● 条件付きブレークポ して、右クリック イント ● 任意の条件式がtrueを 返すときだけブレーク する 条件式を入力 ● 作り方 1.ブレークポイントを 作成してから、右ク リック 2.Edit Breakpoint... か ら、条件式を入力する
  • 29. 多彩なブレークポイント(2) ● DOMブレークポイント ● 任意の要素ツリーや属性の変更、ノードの削除時に ブレークする。(要素を右クリックして指定) ● XHR ブレークポイント ● XHR送信時にブレークする。送信先が特定の文字 列を含む時だけブレークすることも可能 ● Event Listenerブレークポイント ● キー入力、マウス、タイマー(setTimeout)などの イベント発生時に自動でブレーク
  • 32. User agent タブ User agent のオーバーライドやデバイスの 表示解像度のシミュレーションなどが行えるので、 Fire mobile シミュレータっぽいこともできる。
  • 33. ドックの位置の変更 ● ドック右下のアイコンを クリックして切り替える ● クリック毎に変わる ● 長押しで3種類切り替わる – 下側 – 右側 クリックまたは – 個別ウィンドウ 長押しで切り替え ● サイズ調整できるので、 右側にしてレスポンシブ の確認にちょっと便利
  • 34. まとめ ● alert() デバッグを置き換える ● ある時点の変数の値を確認したい時には、 ブレークポイントを使ぉう! ● ある条件だけブレークしたい時には、 条件付きブレークポイント! ● 止まったら嫌な時とか、連続した値を確認した い時は、console.log() を使う ● 他にも便利な機能がいっぱいあるので少しずつ 覚えると吉!
  • 35. 参考 資料を書くにあたって参考にさせて頂いたサイト ● Google Chrome Developer Tools入門 http://ss-o.net/event/20120212/ ● Google Chrome版Firebug: デベロッパーツール取扱説明書 http://gihyo.jp/dev/feature/01/devtools ● chromeデベロッパーツールでjavascriptのデ バッグをする -node.jsもあるでよ- http://d.hatena.ne.jp/shim0mura/20111231/1325357395