Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Keiichi Kobayashi
3,633 views
Java script関数コールの追跡
春のJavaScript祭りにてLT。
Technology
◦
Read more
1
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 13
2
/ 13
3
/ 13
4
/ 13
5
/ 13
6
/ 13
7
/ 13
8
/ 13
9
/ 13
10
/ 13
11
/ 13
12
/ 13
13
/ 13
More Related Content
PDF
JasmineによるJavascriptテスト駆動開発
by
Yoichi Toyota
PDF
php開発で使うタスクランナー gulp
by
Yuuki Takezawa
PDF
Laravel5.1 Release
by
Yuuki Takezawa
PDF
Laravel / Lumen 次の一歩
by
Yuuki Takezawa
PDF
最近流行りのビルドツールとは
by
Takahiro Maki
PDF
LaravelとMVCの先へ
by
Yuuki Takezawa
PDF
モダンJavaScript環境構築一歩目
by
大樹 小倉
PDF
Java初心者がJava8のラムダ式をやってみた
by
Aya Ebata
JasmineによるJavascriptテスト駆動開発
by
Yoichi Toyota
php開発で使うタスクランナー gulp
by
Yuuki Takezawa
Laravel5.1 Release
by
Yuuki Takezawa
Laravel / Lumen 次の一歩
by
Yuuki Takezawa
最近流行りのビルドツールとは
by
Takahiro Maki
LaravelとMVCの先へ
by
Yuuki Takezawa
モダンJavaScript環境構築一歩目
by
大樹 小倉
Java初心者がJava8のラムダ式をやってみた
by
Aya Ebata
What's hot
PDF
Laravel_オープンソースカンファレンスhokkaido_JP_2014
by
Yuuki Takezawa
PDF
SpockからRSpecにきたときの気づき #coedorb
by
Youtarou TAKAHASHI
PPTX
Phpフレームワーク 「laravel」でブログを作ろう
by
Syouta Tada
PDF
コンパイラ指向ReVIEW
by
Masahiro Wakame
KEY
capybara で快適なテスト生活を
by
Ryunosuke SATO
PDF
PHP Application E2E with Capybara
by
Yoshiaki Yoshida
PPTX
Introduction to GraalVM
by
Koichi Sakata
PPTX
モダン JavaScript における非同期処理 - Promise, async/await -
by
Kazunori Hashikuchi
PDF
Javascriptのあれやこれやをまとめて説明してみる
by
Shunji Konishi
PPTX
Js async
by
Shunji Makino
PDF
ng-japan 2015 TypeScript+AngularJS 1.3
by
Masahiro Wakame
PDF
PHPデプロイツールの世界
by
Yuuki Takezawa
PDF
Async Enhancement
by
kamiyam .
PPTX
〜laravel で学ぶ MVC
by
mikakane
PDF
ECMAScript6による関数型プログラミング
by
TanUkkii
PDF
Ember コミュニティとわたし
by
Ryunosuke SATO
PDF
いまどきのPHP開発現場 -2015年秋-
by
Masashi Shinbara
PDF
Rails,RSpec & Capybara で困った話
by
Akio Tajima
PDF
javascript を Xcode でテスト
by
Yoichiro Sakurai
PPTX
Introduction to GraalVM and Native Image
by
Koichi Sakata
Laravel_オープンソースカンファレンスhokkaido_JP_2014
by
Yuuki Takezawa
SpockからRSpecにきたときの気づき #coedorb
by
Youtarou TAKAHASHI
Phpフレームワーク 「laravel」でブログを作ろう
by
Syouta Tada
コンパイラ指向ReVIEW
by
Masahiro Wakame
capybara で快適なテスト生活を
by
Ryunosuke SATO
PHP Application E2E with Capybara
by
Yoshiaki Yoshida
Introduction to GraalVM
by
Koichi Sakata
モダン JavaScript における非同期処理 - Promise, async/await -
by
Kazunori Hashikuchi
Javascriptのあれやこれやをまとめて説明してみる
by
Shunji Konishi
Js async
by
Shunji Makino
ng-japan 2015 TypeScript+AngularJS 1.3
by
Masahiro Wakame
PHPデプロイツールの世界
by
Yuuki Takezawa
Async Enhancement
by
kamiyam .
〜laravel で学ぶ MVC
by
mikakane
ECMAScript6による関数型プログラミング
by
TanUkkii
Ember コミュニティとわたし
by
Ryunosuke SATO
いまどきのPHP開発現場 -2015年秋-
by
Masashi Shinbara
Rails,RSpec & Capybara で困った話
by
Akio Tajima
javascript を Xcode でテスト
by
Yoichiro Sakurai
Introduction to GraalVM and Native Image
by
Koichi Sakata
Viewers also liked
PDF
JavaScriptでできる電力使用状況グラフ
by
Yuko Toriyama
PDF
かすたむ!
by
鈴木 安美
PDF
JSと仲良くなるための心得
by
鈴木 安美
PDF
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
by
pandeiro245
PDF
JSとKinectさん
by
鈴木 安美
PDF
みんなが調べないJS調べてみた JSオジサン#2
by
Kenichi Kanai
PDF
設計は相談だ
by
鈴木 安美
PPTX
君よ知るや JScript.NET
by
彰 村地
PDF
テスト用ライブラリ power-assert
by
Takuto Wada
PDF
20140529 JS Ojisan #2 LT あの「note」はAngular.js
by
Shoei Takamaru
PDF
あの時AngularJSと出会った僕らは
by
Muyuu Fujita
PDF
JSオジサン openframeworks emscripten
by
minoru nakanou
JavaScriptでできる電力使用状況グラフ
by
Yuko Toriyama
かすたむ!
by
鈴木 安美
JSと仲良くなるための心得
by
鈴木 安美
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
by
pandeiro245
JSとKinectさん
by
鈴木 安美
みんなが調べないJS調べてみた JSオジサン#2
by
Kenichi Kanai
設計は相談だ
by
鈴木 安美
君よ知るや JScript.NET
by
彰 村地
テスト用ライブラリ power-assert
by
Takuto Wada
20140529 JS Ojisan #2 LT あの「note」はAngular.js
by
Shoei Takamaru
あの時AngularJSと出会った僕らは
by
Muyuu Fujita
JSオジサン openframeworks emscripten
by
minoru nakanou
More from Keiichi Kobayashi
PDF
こだわりの仕事スタイル:モチベ維持
by
Keiichi Kobayashi
PDF
Ssh公開鍵認証ハンズオン
by
Keiichi Kobayashi
PDF
そうだプラグイン作ろう =Unityの巻=
by
Keiichi Kobayashi
PDF
PHP with Visual Studio
by
Keiichi Kobayashi
PDF
Angular js活用事例:filydoc
by
Keiichi Kobayashi
PDF
Chromeデベロッパーツール
by
Keiichi Kobayashi
PDF
Filydoc紹介(8月末版)
by
Keiichi Kobayashi
PDF
いまさら触るAwt
by
Keiichi Kobayashi
PDF
Filydoc紹介
by
Keiichi Kobayashi
PDF
似非燃え尽き症候群
by
Keiichi Kobayashi
PDF
ドハマリ Is ナレッジ
by
Keiichi Kobayashi
PDF
Tbsアイデアソンに参加しました
by
Keiichi Kobayashi
PDF
オープンソースコミュニティへのライトな貢献
by
Keiichi Kobayashi
PDF
職業エンジニアの生態
by
Keiichi Kobayashi
PDF
検索の工夫
by
Keiichi Kobayashi
PDF
個人名刺を作ろう
by
Keiichi Kobayashi
PDF
ソフトウェア開発ブースト4手
by
Keiichi Kobayashi
PDF
新サービス(勉強会まとめ)を作り始めてみた
by
Keiichi Kobayashi
PDF
フリーエンジニアになりました
by
Keiichi Kobayashi
PPT
Visual studio
by
Keiichi Kobayashi
こだわりの仕事スタイル:モチベ維持
by
Keiichi Kobayashi
Ssh公開鍵認証ハンズオン
by
Keiichi Kobayashi
そうだプラグイン作ろう =Unityの巻=
by
Keiichi Kobayashi
PHP with Visual Studio
by
Keiichi Kobayashi
Angular js活用事例:filydoc
by
Keiichi Kobayashi
Chromeデベロッパーツール
by
Keiichi Kobayashi
Filydoc紹介(8月末版)
by
Keiichi Kobayashi
いまさら触るAwt
by
Keiichi Kobayashi
Filydoc紹介
by
Keiichi Kobayashi
似非燃え尽き症候群
by
Keiichi Kobayashi
ドハマリ Is ナレッジ
by
Keiichi Kobayashi
Tbsアイデアソンに参加しました
by
Keiichi Kobayashi
オープンソースコミュニティへのライトな貢献
by
Keiichi Kobayashi
職業エンジニアの生態
by
Keiichi Kobayashi
検索の工夫
by
Keiichi Kobayashi
個人名刺を作ろう
by
Keiichi Kobayashi
ソフトウェア開発ブースト4手
by
Keiichi Kobayashi
新サービス(勉強会まとめ)を作り始めてみた
by
Keiichi Kobayashi
フリーエンジニアになりました
by
Keiichi Kobayashi
Visual studio
by
Keiichi Kobayashi
Java script関数コールの追跡
1.
JavaScript 関数コールの追跡 @kobayan_tokyo
2.
自己紹介 @kobayan_tokyo (またはkobake) http://blog.clock-up.jp/ ・元ゲーム屋(10年) ・現フリーランスWeb屋(1年) ・C++, C#,
Java, PHP, Ruby, JavaScript, CoffeeScript ・Ruby on Rails, CakePHP, .NET Framework ・Web, Windows, Android ・Visual Studio, IntelliJ IDEA, Brackets
3.
JavaScriptの関数コールを追跡したい 人様の作ったサイトをハック解析したい ↓ とりあえず関数コールの流れをザックリ見たい
4.
手がかり1:ブレークポイント ・あたりをつけて「適当な場所にブレークポイントを付ける」 ・目的の関数が呼ばれたタイミングは分かる ・いちいち「これが呼ばれるだろう」というあたりを付けなければならない ・ブレークポイントに達する度にいちいち処理が止まって鬱陶しい (我々は何か特定の問題を解決したいのではなく、構造の解析を行いたいのだ)
5.
手がかり2:関数のラップ ・あたりをつけて「適当な関数をラップする」 ・目的の関数が呼ばれたタイミングは分かる ・いちいち「これが呼ばれるだろう」というあたりを付けなければならない ・ブレークポイントに達する度にいちいち処理が止まって鬱陶しい ・いまだに「あたりを付ける」必要はある ------------------------------------------------- org_hoge = hoge; hoge
= function(){ console.log("---- hoge called ----"); org_hoge(); } -------------------------------------------------
6.
手がかり3:Function.prototype.call http://stackoverflow.com/questions/4921966/live-javascript-debugging-by-recording-function-calls-and- parameters -------------------------------------------------------------------------------------------------------------------------- Can you override
Function.prototype.call and retrieve arguments and arguments.callee? -------------------------------------------------------------------------------------------------------------------------- な・・る・・ほ・・ど・・?? - Function.prototype.call … すべての関数の呼び出し - arguments.callee … 関数内で参照できる関数そのもの それはつまり、 関数すべてのコールを書き換えるという暴力的な働きかけ
7.
Function.prototype.call書き換え http://stackoverflow.com/questions/5226550/can-i-override-the-javascript-function-object-to-log-all- function-calls --------------------------------------------------------------------- var origCall =
Function.prototype.call; Function.prototype.call = function (thisArg) { console.log("calling a function"); var args = Array.prototype.slice.call(arguments, 1); origCall.apply(thisArg, args); }; --------------------------------------------------------------------- 想像には及びませんがこれは console.log 諸々自体の呼び出しにより 無限ループに。
8.
書き換える範囲を絞る http://stackoverflow.com/questions/5033836/adding-console-log-to-every-function-automatically ------------------------------------------------------------------------------- function augment(withFn) { var
name, fn; for (name in window) { fn = window[name]; if (typeof fn === 'function') { window[name] = (function(name, fn) { var args = arguments; return function() { withFn.apply(this, args); return fn.apply(this, arguments); } })(name, fn); } } } augment(function(name, fn) { console.log("-------- calling " + name + " --------"); }); ------------------------------------------------------------------------------- window配下の関数(?)のみラップする
9.
やってみよう ログ多すぎ!
10.
もう少し絞る if (typeof fn
=== 'function') { if(name == 'setTimeout') continue; if(name == 'clearTimeout') continue; window[name] = (function(name, fn) { var args = arguments; return function() { withFn.apply(this, args); return fn.apply(this, arguments); } })(name, fn); }
11.
絞った結果 少しログ量が減った(それでも多いけど)
12.
さらなる一歩 ・グローバル関数(?)以外の関数も監視したい ・コールスタックなんかも表示したい ・行番号やファイル名なんかも出したいよね (無名関数とかもあるし、これが無いとなんとも) (準備時間オーバーしました) (引き続き情報まとめ&調査していきます)
13.
近況 ・Chromeビルド環境構築中(ディスク足りなくなり そうなので出直し中)
Download