Submit Search
Upload
Java script関数コールの追跡
•
1 like
•
3,597 views
Keiichi Kobayashi
Follow
春のJavaScript祭りにてLT。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 13
Download now
Download to read offline
Recommended
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
Yoichi Toyota
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
最近流行りのビルドツールとは
最近流行りのビルドツールとは
Takahiro Maki
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
大樹 小倉
Java初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみた
Aya Ebata
Recommended
JasmineによるJavascriptテスト駆動開発
JasmineによるJavascriptテスト駆動開発
Yoichi Toyota
php開発で使うタスクランナー gulp
php開発で使うタスクランナー gulp
Yuuki Takezawa
Laravel5.1 Release
Laravel5.1 Release
Yuuki Takezawa
Laravel / Lumen 次の一歩
Laravel / Lumen 次の一歩
Yuuki Takezawa
最近流行りのビルドツールとは
最近流行りのビルドツールとは
Takahiro Maki
LaravelとMVCの先へ
LaravelとMVCの先へ
Yuuki Takezawa
モダンJavaScript環境構築一歩目
モダンJavaScript環境構築一歩目
大樹 小倉
Java初心者がJava8のラムダ式をやってみた
Java初心者がJava8のラムダ式をやってみた
Aya Ebata
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Yuuki Takezawa
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
capybara で快適なテスト生活を
capybara で快適なテスト生活を
Ryunosuke SATO
PHP Application E2E with Capybara
PHP Application E2E with Capybara
Yoshiaki Yoshida
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
Js async
Js async
Shunji Makino
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
Async Enhancement
Async Enhancement
kamiyam .
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
TanUkkii
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話
Akio Tajima
javascript を Xcode でテスト
javascript を Xcode でテスト
Yoichiro Sakurai
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Koichi Sakata
JavaScriptでできる電力使用状況グラフ
JavaScriptでできる電力使用状況グラフ
Yuko Toriyama
かすたむ!
かすたむ!
鈴木 安美
More Related Content
What's hot
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Yuuki Takezawa
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Youtarou TAKAHASHI
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
Syouta Tada
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
Masahiro Wakame
capybara で快適なテスト生活を
capybara で快適なテスト生活を
Ryunosuke SATO
PHP Application E2E with Capybara
PHP Application E2E with Capybara
Yoshiaki Yoshida
Introduction to GraalVM
Introduction to GraalVM
Koichi Sakata
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Kazunori Hashikuchi
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Shunji Konishi
Js async
Js async
Shunji Makino
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
Masahiro Wakame
PHPデプロイツールの世界
PHPデプロイツールの世界
Yuuki Takezawa
Async Enhancement
Async Enhancement
kamiyam .
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
mikakane
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
TanUkkii
Ember コミュニティとわたし
Ember コミュニティとわたし
Ryunosuke SATO
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Masashi Shinbara
Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話
Akio Tajima
javascript を Xcode でテスト
javascript を Xcode でテスト
Yoichiro Sakurai
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Koichi Sakata
What's hot
(20)
Laravel_オープンソースカンファレンスhokkaido_JP_2014
Laravel_オープンソースカンファレンスhokkaido_JP_2014
SpockからRSpecにきたときの気づき #coedorb
SpockからRSpecにきたときの気づき #coedorb
Phpフレームワーク 「laravel」でブログを作ろう
Phpフレームワーク 「laravel」でブログを作ろう
コンパイラ指向ReVIEW
コンパイラ指向ReVIEW
capybara で快適なテスト生活を
capybara で快適なテスト生活を
PHP Application E2E with Capybara
PHP Application E2E with Capybara
Introduction to GraalVM
Introduction to GraalVM
モダン JavaScript における非同期処理 - Promise, async/await -
モダン JavaScript における非同期処理 - Promise, async/await -
Javascriptのあれやこれやをまとめて説明してみる
Javascriptのあれやこれやをまとめて説明してみる
Js async
Js async
ng-japan 2015 TypeScript+AngularJS 1.3
ng-japan 2015 TypeScript+AngularJS 1.3
PHPデプロイツールの世界
PHPデプロイツールの世界
Async Enhancement
Async Enhancement
〜laravel で学ぶ MVC
〜laravel で学ぶ MVC
ECMAScript6による関数型プログラミング
ECMAScript6による関数型プログラミング
Ember コミュニティとわたし
Ember コミュニティとわたし
いまどきのPHP開発現場 -2015年秋-
いまどきのPHP開発現場 -2015年秋-
Rails,RSpec & Capybara で困った話
Rails,RSpec & Capybara で困った話
javascript を Xcode でテスト
javascript を Xcode でテスト
Introduction to GraalVM and Native Image
Introduction to GraalVM and Native Image
Viewers also liked
JavaScriptでできる電力使用状況グラフ
JavaScriptでできる電力使用状況グラフ
Yuko Toriyama
かすたむ!
かすたむ!
鈴木 安美
JSと仲良くなるための心得
JSと仲良くなるための心得
鈴木 安美
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
pandeiro245
JSとKinectさん
JSとKinectさん
鈴木 安美
みんなが調べないJS調べてみた JSオジサン#2
みんなが調べないJS調べてみた JSオジサン#2
Kenichi Kanai
設計は相談だ
設計は相談だ
鈴木 安美
君よ知るや JScript.NET
君よ知るや JScript.NET
彰 村地
テスト用ライブラリ power-assert
テスト用ライブラリ power-assert
Takuto Wada
20140529 JS Ojisan #2 LT あの「note」はAngular.js
20140529 JS Ojisan #2 LT あの「note」はAngular.js
Shoei Takamaru
あの時AngularJSと出会った僕らは
あの時AngularJSと出会った僕らは
Muyuu Fujita
JSオジサン openframeworks emscripten
JSオジサン openframeworks emscripten
minoru nakanou
Viewers also liked
(12)
JavaScriptでできる電力使用状況グラフ
JavaScriptでできる電力使用状況グラフ
かすたむ!
かすたむ!
JSと仲良くなるための心得
JSと仲良くなるための心得
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSRelでlocalStorageを使って 完全オフラインなブラウザアプリ@JSおじさん #2
JSとKinectさん
JSとKinectさん
みんなが調べないJS調べてみた JSオジサン#2
みんなが調べないJS調べてみた JSオジサン#2
設計は相談だ
設計は相談だ
君よ知るや JScript.NET
君よ知るや JScript.NET
テスト用ライブラリ power-assert
テスト用ライブラリ power-assert
20140529 JS Ojisan #2 LT あの「note」はAngular.js
20140529 JS Ojisan #2 LT あの「note」はAngular.js
あの時AngularJSと出会った僕らは
あの時AngularJSと出会った僕らは
JSオジサン openframeworks emscripten
JSオジサン openframeworks emscripten
Similar to Java script関数コールの追跡
Web制作勉強会 #2
Web制作勉強会 #2
Moto Yan
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
An Internal of LINQ to Objects
An Internal of LINQ to Objects
Yoshifumi Kawai
超高速アプリ開発法
超高速アプリ開発法
Keiichi SASAKI
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React Natice
GMO-Z.com Vietnam Lab Center
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
H2O Space. Co., Ltd.
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
Tomohiro Kumagai
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Hiroh Satoh
Play jjug2012spring
Play jjug2012spring
Takafumi Ikeda
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
emasaka
What is doobie? - database access for scala -
What is doobie? - database access for scala -
chibochibo
つぶLT20121215
つぶLT20121215
遼一 杉浦
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Tokuhiro Matsuno
Hashicorpツールズ
Hashicorpツールズ
Uchio Kondo
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
Naoya Ito
らくちん Go言語
らくちん Go言語
株式会社YEBIS.XYZ
2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
miso- soup3
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
chuck h
Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
Clrh 110827 wfho
Clrh 110827 wfho
Tomoyuki Obi
Similar to Java script関数コールの追跡
(20)
Web制作勉強会 #2
Web制作勉強会 #2
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Javaはどのように動くのか~スライドでわかるJVMの仕組み
An Internal of LINQ to Objects
An Internal of LINQ to Objects
超高速アプリ開発法
超高速アプリ開発法
Create android app can send SMS and Email by React Natice
Create android app can send SMS and Email by React Natice
ちゃんとWeb会議スライド『Coffee script』
ちゃんとWeb会議スライド『Coffee script』
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
ぼくのかんがえたさいきょうのうぇぶあぷりけーしょんふれーむわーく - YAPC Asia 2011
Play jjug2012spring
Play jjug2012spring
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発
What is doobie? - database access for scala -
What is doobie? - database access for scala -
つぶLT20121215
つぶLT20121215
Javaで1から10まで書いた話(sanitized)
Javaで1から10まで書いた話(sanitized)
Hashicorpツールズ
Hashicorpツールズ
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
SmartPhone development guide with CoffeeScript + Node + HTML5 Technology, for...
らくちん Go言語
らくちん Go言語
2016/12/17 ASP.NET フロントエンドタスク入門
2016/12/17 ASP.NET フロントエンドタスク入門
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
Web技術勉強会 第33回
Web技術勉強会 第33回
Clrh 110827 wfho
Clrh 110827 wfho
More from Keiichi Kobayashi
こだわりの仕事スタイル:モチベ維持
こだわりの仕事スタイル:モチベ維持
Keiichi Kobayashi
Ssh公開鍵認証ハンズオン
Ssh公開鍵認証ハンズオン
Keiichi Kobayashi
そうだプラグイン作ろう =Unityの巻=
そうだプラグイン作ろう =Unityの巻=
Keiichi Kobayashi
PHP with Visual Studio
PHP with Visual Studio
Keiichi Kobayashi
Angular js活用事例:filydoc
Angular js活用事例:filydoc
Keiichi Kobayashi
Chromeデベロッパーツール
Chromeデベロッパーツール
Keiichi Kobayashi
Filydoc紹介(8月末版)
Filydoc紹介(8月末版)
Keiichi Kobayashi
いまさら触るAwt
いまさら触るAwt
Keiichi Kobayashi
Filydoc紹介
Filydoc紹介
Keiichi Kobayashi
似非燃え尽き症候群
似非燃え尽き症候群
Keiichi Kobayashi
ドハマリ Is ナレッジ
ドハマリ Is ナレッジ
Keiichi Kobayashi
Tbsアイデアソンに参加しました
Tbsアイデアソンに参加しました
Keiichi Kobayashi
オープンソースコミュニティへのライトな貢献
オープンソースコミュニティへのライトな貢献
Keiichi Kobayashi
職業エンジニアの生態
職業エンジニアの生態
Keiichi Kobayashi
検索の工夫
検索の工夫
Keiichi Kobayashi
個人名刺を作ろう
個人名刺を作ろう
Keiichi Kobayashi
ソフトウェア開発ブースト4手
ソフトウェア開発ブースト4手
Keiichi Kobayashi
新サービス(勉強会まとめ)を作り始めてみた
新サービス(勉強会まとめ)を作り始めてみた
Keiichi Kobayashi
フリーエンジニアになりました
フリーエンジニアになりました
Keiichi Kobayashi
Visual studio
Visual studio
Keiichi Kobayashi
More from Keiichi Kobayashi
(20)
こだわりの仕事スタイル:モチベ維持
こだわりの仕事スタイル:モチベ維持
Ssh公開鍵認証ハンズオン
Ssh公開鍵認証ハンズオン
そうだプラグイン作ろう =Unityの巻=
そうだプラグイン作ろう =Unityの巻=
PHP with Visual Studio
PHP with Visual Studio
Angular js活用事例:filydoc
Angular js活用事例:filydoc
Chromeデベロッパーツール
Chromeデベロッパーツール
Filydoc紹介(8月末版)
Filydoc紹介(8月末版)
いまさら触るAwt
いまさら触るAwt
Filydoc紹介
Filydoc紹介
似非燃え尽き症候群
似非燃え尽き症候群
ドハマリ Is ナレッジ
ドハマリ Is ナレッジ
Tbsアイデアソンに参加しました
Tbsアイデアソンに参加しました
オープンソースコミュニティへのライトな貢献
オープンソースコミュニティへのライトな貢献
職業エンジニアの生態
職業エンジニアの生態
検索の工夫
検索の工夫
個人名刺を作ろう
個人名刺を作ろう
ソフトウェア開発ブースト4手
ソフトウェア開発ブースト4手
新サービス(勉強会まとめ)を作り始めてみた
新サービス(勉強会まとめ)を作り始めてみた
フリーエンジニアになりました
フリーエンジニアになりました
Visual studio
Visual studio
Recently uploaded
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(7)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
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 now