タグ

関連タグで絞り込む (202)

タグの絞り込みを解除

debugに関するclavierのブックマーク (281)

  • JavaScriptエンジニアなら知ってるよね? エラー処理のいい書き方、悪い書き方

    JavaScriptのエラー処理、ちゃんと書いていますか? エラーを無視せず、どこに問題があるのか、きちんと確認できるコードの書き方をデモで紹介。 この記事はTim SeverienとMoritz Krögerが査読を担当しています。最良の記事を提供することができ、SitePointの査読担当者の皆さんに感謝します。 JavaScriptのエラー処理には危険が潜んでことを知っていますか? もしマーフィーの法則を信頼しているとしたら、不具合が生じる可能性が当に高いです! この記事では、JavaScriptのエラー処理について考え、その落とし穴から便利な実践例までを説明します。さらに最後には、非同期コードとAjaxにも触れます。 JavaScriptはイベント駆動型プログラムで、プログラミングをより豊かなものにしてくれます。ブラウザーをイベント駆動型プログラムと考えると、発生するエラーは同一

    JavaScriptエンジニアなら知ってるよね? エラー処理のいい書き方、悪い書き方
  • Golangでエラー時にスタックトレースを表示する - Qiita

    Golangerrorにはスタックトレース情報はない.基は必要ないと思うし困ったこともない.一方で新しくプロジェクトに入りかつコードベースに慣れてない場合はどこが問題かアタリをつけるためにあっても良いとも思う.pkg/errorsを使ってるならそれはすぐに実現できる. pkg/errorsの基的な考え方についてなどは GoCon 2016 springの後に "Golangのエラー処理とpkg/error"にまとめた(作者のDaveのブログ記事は "Don’t just check errors, handle them gracefully").ここで強調して書いたのはちゃんとエラーをアノテートする(何をしてそのエラーが発生したかの状況を付加する)ことである.特に外部のパッケージとやり取りする場合,つまりまともなエラーメッセージが返ってこないかもしれない場合,pkg/errorsの

    Golangでエラー時にスタックトレースを表示する - Qiita
  • JavaScript 祭で発表してきました - 若くない何かの悩み

    秋のJavaScript祭 in mixi で、「バグの見つけ方」について発表してきました。 speakerdeck.com 過去二つのスライドをくっつけたものなので、既視感があるかもしれませんが気のせいです。 さて、前の発表を終えてから、いくつか直したかった点があったので、その点だけ修正してあります。 例えば、「ステップ実行」→「手動動作確認」のあたりですね。 ステップ実行でバグを見つけるというより、見て触っておかしいと気づいて、ステップ実行へ突入するはずですから、「手動動作確認」の方がふさわしいと思ったためです。 あと、次の2つの感想が特に嬉しかったです。ありがとうございました。 スライドめっちゃすてきだしリントやテストの大事さがすごくわかりやすい… #jsfes— nao (@naoi109) October 15, 2016 これまでの人生で一番簡潔に型検査やリントやテストの重要性

    JavaScript 祭で発表してきました - 若くない何かの悩み
  • Google App Engine for Go のローカルサーバでデバッグをする #golang #GAE - Qiita

    はじめに Google App Engine for Go (GAE/Go) を使っていて、ローカルでデバッグがしたくなることがあるかと思います。 Goにはいくつかデバッガがあり、IDEが対応しているものもあります。 ここでは Delve というデバッガを使ってデバッグする方法を紹介します。 Delveは動いているGoのプロセスにアタッチしてデバッグすることができます。 そのため、GAE/Goのローカルサーバのプロセスにもアタッチしてデバッグすることができます。 しかし、GAE/Goのローカルサーバのプロセスは、複数動いていたり、切り替わったりするため、一筋縄ではいきません。 ここでは、以下の記事を基に、ターミナル上でローカルサーバのデバッグをやってみます。 Debugging Golang Appengine module with Visual Studio Code Delveのイン

    Google App Engine for Go のローカルサーバでデバッグをする #golang #GAE - Qiita
  • 特定条件下のclone(2)を4倍速くする - 人間とウェブの未来

    とあるサーバで妙にシステムCPUの使用率が高い現象が置きておりました。 そこで、まずはざっくりとperf topでプロファイルをとってみると、以下のようになっていました。 22.38% [kernel] [k] copy_pte_range 18.44% [kernel] [k] zap_pte_range 11.13% [kernel] [k] change_pte_range 3.58% [kernel] [k] page_fault 3.32% [kernel] [k] page_remove_rmap また、各プロセスのstraceを眺めていると、cloneで0.05秒とかなり時間がかかっているようです。これだと単純計算で1コアで秒間20回のcloneでコア100%占有してしまう程度の非常に低速な処理しかできないことになります。 sudo strace -T -o/dev/stdo

    特定条件下のclone(2)を4倍速くする - 人間とウェブの未来
  • なんかトレースするはなし

    PerfectQueueはいかにパーフェクトか、あるいはRubyMySQLでジョブキューを作る試みについて

    なんかトレースするはなし
  • 【Python】いつまでprintデバッグで消耗してるの? - らっちゃいブログ

    Python を初めて間もない頃、自分も print デバッグしてました。効率の悪さを認識しつつも、IDEを導入してデバッグする方法を調べてセッティングして、という手順が面倒でずっと放置してました。 // 普段は vim で開発してます そうこうしてたら print デバッグではどうにもならないバグにぶち当たり、仕方なくデバッグポイントを置く方法を調べたわけです。するとどうでしょう。 ソースコード中に以下の一文を入れるだけではないですか。 import pdb; pdb.set_trace() たったこれだけで、上の一文を挿入した行で処理が停止し、コンソール上でステップ実行が出来るようになります。最高かよ。 個人的にですが、デバッガー起動中によく使うコマンドとしては以下です。 コマンド 説明 s(tep) ステップイン n(ext) ステップオーバー r(eturn) ステップアウト l(

    【Python】いつまでprintデバッグで消耗してるの? - らっちゃいブログ
  • ブレークポイントを使ったJavaScriptデバッグを整理してみた【再入門】 - Qiita

    はじめに プログラミングの上達において、デバッグスキルを上げることはとても重要で近道の1つだと考えています。 私自身、勉強し始めた頃に知っていれば(理解できていれば)とよく思います。 今回、JavaScriptデバッグについてChromeDevtoolsとブレークポイントを使った基パターンを整理しました。 自身の復習かつ、あまり馴染みの無い方でも、以下おおよそ理解できるようになれば良いなぁ、というのが稿の目的です。 どのようなものにブレークポイントが貼れるのか どういった時にブレークポイントが発動されるのか ブレークポイントが発動されると何ができるのか ご存知の方には特に目新しいことはないかと思いますが、何かのお役に立てば幸いです。 表示・動作はChrome 50.0.2661.87mで確認したものになります(2016-05-11) タブやパネルの位置は環境によって異なる可能性がありま

    ブレークポイントを使ったJavaScriptデバッグを整理してみた【再入門】 - Qiita
  • カーネルスレッドのループと停止をカーネルモジュールで実装 - 人間とウェブの未来

    以前Linuxのカーネルスレッドがループして暴走したときに、カーネルスレッドの扱いを調べていた時期があって、それの簡単な動きを再現するべくカーネルモジュールを作りました。まずは、自力で試したい人は以下を見ずに試すと良いでしょう。 まずはカーネルスレッドをループさせる カーネルスレッドは、所謂ps上で[kthread_dayo]みたいな感じで見えるプロセスの事です。厳密にはユーザランドのプロセスも定期的にカーネル側の処理が走るときは[]付けになったりするのですが、簡単には上記のような状態とします。これをユーザランドのプログラミングで作ることは難しいのですが、カーネルモジュールを使えばすごく簡単につくれます。 まずは以下のようにカーネルスレッドをループさせるコードを書きます。 #include <linux/module.h> #include <linux/sched.h> #include

    カーネルスレッドのループと停止をカーネルモジュールで実装 - 人間とウェブの未来
  • Pythonのメモリ使用量を減らすポイント - Qiita

    今回は、iXce’s blog » Blog Archive » Optimizing memory usage in Python: a case study という記事を見つけて興味深かったので紹介したいと思います。何も説明書いてないところがあるので、詳しく知りたい人は元記事を読んでほしいです。 動機 プレーンテキストをGコードに変換するプログラムを書いている 3.8MB (14万Gコード) のファイルを読み込むと、244MBもメモリを使ってしまう だからメモリ使用量を減らしたい やったこと プロファイル どこがメモリをたくさん使ってるのか調べるためにHeapyを使う $ pip install guppy で入れられる。 するとこんな感じの結果が出力される。 Partition of a set of 225737 objects. Total size = 115386656 by

    Pythonのメモリ使用量を減らすポイント - Qiita
  • OutOfMemoryError の調べ方 - Qiita

    OutOfMemoryError (以下 OOME)が起こったときにお手上げ状態にならないためにも、 Java のメモリ管理の仕組みとか、 OOME が起こったときの調査方法とかを調べる。 環境 OS Windows 7 > java -version java version "1.8.0_74" Java(TM) SE Runtime Environment (build 1.8.0_74-b02) Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode) Java 8 で、 Oracle の JVM を前提とした話です。 Java のメモリ管理 これを知っておかないと、 OOME が起こっても、メモリ内で何が起こっていて、どこを調査すべきで、どのように対処したらいいのかが判断できない。 なので、まずは、そもそも J

    OutOfMemoryError の調べ方 - Qiita
  • Remote Debugging with Byebug, Rails and Pow

    Byebug is a simple to use, feature rich debugger for Ruby 2.x. In this post, we'll discuss how to set up remote debugging with byebug so that you can debug code running in Pow, Unicorn or other application servers. If you haven't seen byebug before, I recommend that you check it out. It's a great debugger for Ruby 2.x. In the words of its authors: Byebug is a simple to use, feature rich debugger f

    Remote Debugging with Byebug, Rails and Pow
  • Fluentdのin_forwardに流れているレコードをtcpdumpで見る - ryotarai's blog

    番環境で動いているFluentdのin_forwardに何が流れているのかを知りたい、けど設定を触りたくない…みたいな場合に流れているタグやレコードを見る方法です。特にFluentdに限った話ではないですが、備忘録として書いておきます。 1. tcpdumpでキャプチャ 調べたいサーバ上で、tcpdumpを使ってパケットキャプチャを取ります。in_forwardのポート番号などを指定してキャプチャします。 $ sudo tcpdump -i eth0 -w fluentd.pcap port 24224 and tcp 2. tcptraceでTCPストリームのデータだけ吐き出す tcptraceは-eオプションを渡すと、TCPストリームごとのデータをファイルに吐いてくれるのでこれを利用します。なお、tcptraceはHomebrewやaptで入ると思います。 $ tcptrace -e

    Fluentdのin_forwardに流れているレコードをtcpdumpで見る - ryotarai's blog
  • iOSアプリのAPIリクエストのトレースはどうするのが効率的か? - Qiita

    この記事はVASILY DEVELOPERS BLOGにも同じ内容で投稿しています。よろしければ他の記事も御覧ください。 普段のアプリ開発において、バックエンドチームから「○○のページで△△のデータ取得するためにリクエストしているURLってどんなの?」と聞かれることがよくあります。 その都度、APIリクエストとリクエスト結果をprintで表示するフラグをONにしてアプリをビルドするということをしていたため、かなり手間がかかっていました。 こういった作業を楽にするためにネットワークデバッグライブラリをいくつか比較してみました。 ライブラリ ResponseDetective https://github.com/netguru/ResponseDetective NSURLSessionのリクエストやレスポンスをデバッガのログに流してくれるライブラリです。 特徴・利点 フルSwiftで書かれ

    iOSアプリのAPIリクエストのトレースはどうするのが効率的か? - Qiita
  • 小崎資広さん「人に依存しないデバッグのために、道具の使い方を知ってほしい」〜RubyKaigi 2015基調講演 2日目 | gihyo.jp

    RubyKaigi 2015レポート 小崎資広さん「人に依存しないデバッグのために、道具の使い方を知ってほしい」〜RubyKaigi 2015基調講演 2日目 12月11日~13日、ベルサール汐留にて「RubyKaigi 2015」が開催されました。今年も基調講演が毎日一つずつ行われました。その模様をレポートします。 RubyKaigi 2015 2日目の基調講演は、世界で唯一の、LinuxのコミッタでありRubyのコミッタでもある小崎資広さんです。今回、小崎さんは「Linux loves Ruby. Ruby Loves Linux - How to debug your linux box」と題して、発表しました。 Linux portメンテナのお仕事 小崎さんは、Ruby Core Teamでの自分の役割を「Linux Portメンテナ」と称し、これまでの仕事の内容を紹介しました。

    小崎資広さん「人に依存しないデバッグのために、道具の使い方を知ってほしい」〜RubyKaigi 2015基調講演 2日目 | gihyo.jp
  • Go言語でファジング

    この記事はGo Advent Calendar 2015の21日目の記事です. 今年もGoコミュニティーから多くのツールが登場した.その中でも異彩を放っていたのがGoogleのDynamic testing toolsチームの@dvyukov氏によるgo-fuzzである. go-fuzzはGo関数のファジングを行うツールである.このツールはとても強力で標準パッケージで100以上,golang.org/x/パッケージで40以上,その他を含めると300以上のバグを発見するという実績を残している(cf. Trophies). 記事ではこのgo-fuzzの紹介を行う. ファジングとは? Fuzz testing - Wikipedia, the free encyclopedia ソフトウェアの脆弱性検出におけるファジングの活用 「ファジング」とはソフトウェアのテスト手法である.テスト対象となる

  • Xcode 7.2 の LLDB で Swiftのデバッグをするコツ

    現在のXcode 7.2でSwiftを使ったiOSアプリのデバッグをするときのコツみたいなものをまとめました。将来的にはより良くなる可能性はあります。というか良くなってほしいです(´・_・`) ■LLDBbreakした地点によって挙動が変わるまずハマりどころがこれですが、現在のLLDBbreakした地点で実行されていたコードがSwiftのコードかC言語系のコードかによってモードが変わります。 // Objective-C mode (lldb) po [someObject property] // Swift mode (lldb) e someObject.property Objective-Cモードの時にSwiftっぽい呼び出しをしたり、その逆をしてもまともにLLDBは動作しません。なので現在自分がどちらのモードのLLDBにいるのかを判断するのがキモになります。 ハマりどころと

    Xcode 7.2 の LLDB で Swiftのデバッグをするコツ
  • 効率よくデバッグする方法 - Fly me to the Luna

    Eclipseデバッガを活用する31のTipsにたくさんのはてブがつきました。たくさんの方に見ていただけたようで、とてもうれしいです。どうもありがとうございました。 デバッガの使い方のスライドを作ってみたものの、効率良くデバッグする方法については書いていませんでした。例えば、ブレークポイントをどこに貼ると効率が良いのか、教えてほしいという声がありました。デバッガ機能をどう使うとより効率的にデバッグできるのか、考えてみました。 デバッグにおける2つのポイント 突然ですが、僕は、デバッグには下記の2つのポイントがあると考えてます。 障害の再現方法を調査する。 ソフトウェアの内部状態を調査する。 みなさんはどうやってデバッグしていますか?僕がデバッグを行う時の流れを書いてみると、 報告された情報を元に、障害がどうやって起きるのか、再現方法を確認します。 再現方法が報告されていない場合は、再現方法

    効率よくデバッグする方法 - Fly me to the Luna
  • gdbを使ったrubyのデバッグ - クックパッド開発者ブログ

    技術部の国分 (@k0kubun) です。 先日byebugの高速化を行っていた最中、変更を加えたbyebugを使っていると一定の確率でrubyがSEGVするバグを発見しました。 私はC言語のコードのデバッグの経験はなかったのですが、デバッガの使い方を調べながらSEGVの原因調査を行いパッチを送ったところ無事取り込まれ、最新の高速なbyebugが安全に使えるようになりました。 その際、ruby自体をデバッグするために必要な情報が分散していて大変だったので、まだrubyのデバッグをしたことがないけれどやってみたいという人を対象に、gdbというデバッガを使ったrubyのデバッグの方法を紹介します。 デバッグ用にrubyをビルドする デバッグ時に変数名やソースコードなどの情報を見るためには、最適化オプションをオフにしてデバッグ用にrubyをビルドしておく必要があります。 rubyのデバッグ用ビル

  • デバッグの技術 | POSTD

    この記事は、アムステルダムで2015年に開かれたFronteersのカンファレンスで私が行った講演、「デバッグの技術」に対応するものです。 要約:利用可能なあらゆるツールの使い方を学び、必要なときにそれを使うことで、バグの撃退を楽しみましょう。そのほうが、キーボードを無暗に叩いて6か月も費やしてしまうより、ずっと楽しいものです。 題に入る前に… この記事を終わりまでスキップしたければ…… Don’t. Write. Bugs. とはいえ…… おそらくこれを読んでいるあなたはロボットではないでしょうから、1個や2個のバグぐらいは書いてしまったことがあるでしょう。「銀の弾丸」は存在しないのです。 実際、先ほどジョークで申し上げた『バグを書くな』というのは、デバッグの仕方を学ぶことの対極にあるものです。必要なのは経験です。バグに対するアプローチを見つけられるようになるためにはバグに遭遇しなけれ

    デバッグの技術 | POSTD