Build with Chrome Learn how Chrome works, participate in origin trials, and build with Chrome everywhere.
こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、
はじめに このポストでは、端末(VT互換端末)でおこる諸問題の診断、追跡を可能にするツール、Trachetの使い方をざっと説明してみようと思います。 じつのところ今回は第一・第二端末特性応答(DA1/DA2)の話を書こうとしていたのですが、やはり一般的にはあまり実体が知覚されていないものの話になってくるあたりからもうピンとこないどころか雲を掴むような印象になりがちで、つまり筆力の限界を感じざるを得なかったので、先にこれを紹介しておけばクエリ・応答シーケンスの話題をいくらか具体的なものとして感じてもらうことが可能なのではないか、と考えたのが、この話を書くきっかけです。 Trachetの概要 Trachetは特に、キーボードやマウス入力周りの不具合、描画周りがおかしくなる現象など、入出力を追跡・監視して対応する必要がある諸問題に対して、アプリケーションと端末の間の具体的な会話を見える化し、原因
reference card-j 01.3.12 10:51 PM - 1 - GDB早見表 GDB Version 4 [] surround optionaI arguments ... show one or more argument 注意: Mac OS XのGDBで動作確認していません。 主要命令 gdb program [core] programをデバッグ [コアダンプcoreを使用] b [file:] function [fileの]functionにブレークポイント設定 run [arglist] [arglist付きで]プログラム実行 bt バックトレース: プログラムスタック表示 p expr 全式の値を表示 c プログラム実行継続 n 次行、関数コールをステップオーバ s 次行、関数コールをステップイン GDB起動 gdb GDB起動、デバッグ対称ファイル指定
グーグルでは、社内のプログラマによって作り出される大量のコードの品質を保つため、チェックイン前にユニットテストとコードレビューが行われているそうです。しかし、コードが大量になってくると、ユニットテストやレビューをすり抜けるバグも少なからず発生します。 そこでコードの品質をさらに高めるために、グーグルでは「バグ予測アルゴリズム」を採用。バグがありそうな部分をレビュアーにアドバイスする仕組みを採用したとのこと。 そのバグ予測アルゴリズムとはどんなものなのか。Google Engineering Toolsブログに投稿されたエントリ「Bug Prediction at Google」(グーグルにおけるバグ予測)で説明されています。 ソースコードの修正履歴を基に予測 コードの中にバグがありそうな箇所を分析する手法としては、「ソフトウェアメトリクス」がよく用いられます。これはコードを静的に分析して、
Events in Javascript are often seen as a bit of an enigma. This is odd given that Javascript is very much an event driven language, but it is typically down to their complex nature and difficulty to debug. To this end I've created Visual Event to help track events which are subscribed to DOM nodes. Update: Visual Event 2 is now available and released as open source. Introduction When working with
2010年度 生物情報科学科 情報基礎実験 資料 2010年11月2日 C++プログラムのデバッグ手法 この資料のURL http://www.xerial.org/wiki/lecture/2010/CppDebug 担当: 斉藤 太郎 (http://www.xerial.org/leo) クラスを使ったプログラミング クラスを使う理由は、おおざっぱに コードを再利用したいとき データ構造を作るとき(BitVector, 木構造など) アルゴリズムに必要な変数やメソッドをまとめるとき などです。クラス(オブジェクト)を作るクセをつけておくと、プログラムの細部を効率的に「忘れる」ことができ、プログラムの大きな流れに集中しやすくなる利点があります。また、道具となるクラスをたくさん用意しておくと、複雑な工程が絡み合ったプログラムでも、短い行数でコーディングできるようになっていきま
Venkman という便利なデバッガがある. 詳細については no title を参照していただくとして, 早速本題に便器. KeySnail や Vimperator のプラグインは, mozIJSSubScriptLoader の loadSubScript というメソッドを使ってロードされている. このメソッドを用いて file:///hoge/huga.js といったローカルファイルをロードすると, その URI が 読み込み元スクリプト -> file:///hoge/huga.js に書き換えられてしまう. Venkman はこの "xxx -> yyy" 形式の URI に対応していないため, loadSubScript を使ってロードしたスクリプトをデバッグしようとすると, もれなくエラーを吐く. ファイルが読み込めないのではデバッグが出来ないに等しいので, これはかなり面
Firebugでは条件付きブレークポイントが使えるので、 scriptタブにて該当行にブレークポイントを貼り、 条件としてconsoleへの出力を||区切りで、最後に&& falseを入れる。 console.debug('this.lastPosition') || console.dir(this.lastPosition) && false こうするとブレークポイントを通る度にconsoleへの出力は評価され、 consoleに出力され、最後の&& falseのため式全体は必ずfalseとして評価されるため ブレークすることはない。 追記 console出力系関数の戻り値はundefinedなんだから&& falseは不要か 追記 nanto_vi @monjudoh JSでは||より&&の方が優先順位が高いので、a || b && c はaが真ならbもcも評価されずに全体が真として
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
さて、前回はインストールからFirebugのタブの基本的な部分について紹介をしてきました。今回は、Firebugに実装されているConsole APIの紹介と、Console APIを利用したデバッグ手法について解説していきます。 Firebugで利用できるAPI Firebugには、デバッグに活用できる2つのAPIが実装されています。今回は、その2つあるAPIのうちConsole APIについて解説していきます。 Console API Console APIはFirebugのタブだけでなく、コンテンツ側のJavaScriptから呼び出すことのできるAPIです。デバッグのために便利な関数があらかじめたくさん用意されています。これらの関数を以下に列挙しますので、目を通してください。 console.log(object[, object, ...]) 渡された全てのオブジェクトをconso
Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最
strace システムコールをトレース。カーネルと何を話しているか。 strace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 straceを使ったデバッグ - SourceForge.JP Magazine : オープンソースの話題満載 Linuxカーネルの作り出す世界 − @IT自分戦略研究所 - ふつうのLinuxプログラミング 青木峰郎 システムコールとライブラリ関数 − @IT自分戦略研究所 システムコール・ライブラリルーチン - UNIX の部屋 ltrace 共有ライブラリの呼び出しをトレース。*.soと何を話しているか。 ltrace -p PID でプロセスにアタッチ。実行中のプロセスをトレース。 ltrace で共有ライブラリの関数呼び出しをトレースする - bkブログ 404 - エラー: 404 - Linux JF ƒ‰ƒCƒuƒ‰ƒŠ‚ÌŠ
Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at
Nederlandstalige versie, Main, Sitemap, News, Download links, Frequently Asked Questions and Answers, K-Lite Codec Pack, VideoLAN, DivX, Xvid, TreeSize Free, TreeSize Professional, Nero CD-DVD Speed, Nero DiscSpeed, IE Collection, McAfee VirusScan, 7-Zip, B1 Free Archiver, WinRAR, WinZip, DirectX, Tweak UI, IrfanView, Ad-Aware, Spybot Search & Destroy, Skype, PuTTY, KeePass Password Safe, Mozilla
関数がどこから呼ばれているのか知りたいときによく使うコード 関数のどこかに埋めて置くだけ try{(0)()}catch(e){alert(e.stack)} 結果はこんな感じ ("baa",1)@chrome://liberator/content/options.js:136 ("baa",(void 0))@chrome://liberator/content/options.js:105 ("=","baa",(void 0),false)@chrome://liberator/content/options.js:286 setAction([object Array])@chrome://liberator/content/options.js:515 ([object Array],false,-1,[object Object])@chrome://liberator/co
CocProxy めんどくさいことしない置換プロキシー 使い方 http://svn.coderepos.org/share/lang/ruby/cocproxy/proxy.rb をダウンロード `files' というディレクトリをつくる 置換したいファイルをてきとうにつっこむ ruby proxy.rb ポートとか表示されるのでブラウザの設定を変える デフォルトだと、 #{File.basename(req.path_info)}", #{req.host}#{req.path_info}", #{req.host}/#{File.basename(req.path_info)}", .#{req.path_info}", がスキャンされ、ヒットしたら置換されます。 例えば、http://example.com/test/foo/bar.css にアクセスすると files/bar.c
今仕事で書いてる Sledge アプリがあるのですが、先日負荷テストを行った結果びっくりすることに現行アプリの10倍遅いことが判明してしまいました・・・orz Sledge フレームワーク自身が重くないことは今までの経験でわかってるのですが、どうにもソースを見直しているだけでは原因が特定できない・・・そんな活躍するのがプロファイラです。プロファイラの御陰で遅いヶ所を特定することができ、無事に想定するパフォーマンスを得ることができました。この内容に関してはまた別エントリにて。 さて、プロファイラを使うとプログラム実行時の各種情報を収集し、性能解析を行うことが可能です。プロファイラについてもう少し詳しくしるには 性能解析 - Wikipedia あたりを読むと良いでしょう。 プロファイラ(英: Profiler)は性能解析ツールであり、プログラム実行時の各種情報を収集する。特に、関数呼び出しの
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く