タグ

debugに関するkamipoのブックマーク (100)

  • 中級者向け iOS デバッグ Tips - jarinosuke blog

    導入 iOS 開発者のみなさん、こんにちは。 このブログでは主にチュートリアルだったりフレームワークの紹介みたいなことを書いてきました。 そこで、たまには中級者向けのエントリを書いて「Xcode バリバリ使って、ビシバシ Objective-C 書いてますよ」アピールします。 iOS 開発をはじめて一通り Framework は理解したけど Xcode 使いこなせてる感が足りない方、夢にまで EXC_BAD_ACCESS が出てくる方に参考になる記事となればと思います。 といっても Xcode はマッシブな IDE なので、4つのデバッグツールに分けて「あれ、それ知らなかった!便利じゃん!」な方法を紹介します。 ブレークポイント デバッグには切っても切れない関係ですね。アプリを実行中に指定した行で処理を中断し、そこからステップ実行で細かいデバッグを可能にしてくれます。 ショートカットキー

    中級者向け iOS デバッグ Tips - jarinosuke blog
  • 初級者向け iOS デバッグ Tips - enator's blog

    2013-01-29 初級者向け iOS デバッグ Tips こちらの良記事を拝見しまして、 中級者向け iOSデバッグTips 初級者向けを作ってみようかと。 とりあえず、 ブレイクポイント操作のステップ実行あたりと NSLog周りについて ブレイクポイント操作のステップ実行 まずブレイクポイントの張り方は、 .mファイルの行番号をクリックするだけで有効になります。 ※青くならない場合は、Toolbar上のBreakPointsをクリックしてください。 で、実際に実行し、その箇所にくると処理が止まってくれます。 ※今回はviewDidLoadに記載しているので、いきなり止まります。 そうすると、デバッグエリアが自動的に表示されます。 ここで重要なボタンがあるので、まずはそこから。 とりあえず、左から番号を振ってみましたが 1.Step over 一行ずつ処理を進めます。ただし、メソッドを

  • 古のテクニックを見せようと思ったら最近の技術の前にあっさり敗北した話

    オブジェクトについて抽象から具象まで取り混ぜて説明していた時、最も具象なレベルで見れば、オブジェクトはメモリ上に確保した領域にすぎないと説明しました。 そんな説明をしていた時、メソッドの実体ってどこにどうあるのですかと質問を受けました。人の心はどこにどうあるのですかという質問に比べると緩い質問ですが、良い質問だと思いました。こういう疑問を持つのは大事だと思うからです。自分もかつてプログラムとは結局のところどう実行されるのかが気になりました。プログラマなら誰もが通る道だと思います。 そんなわけでJavaのような箱入り娘から離れて、デレのないツンデレ娘ことC言語で古のテクニックを見せることにしました。 とりあえず次の簡単なコードから始めます。C言語は知らなくても構いません。関数fnがあって、引数に2を加算して返すことだけを読み取ってください。 #include <stdio.h>

  • tappについてそろそろ一言言っておくか - けんちゃんくんさんのWeb日記

    弊社で(総力を上げて)メンテナンスしているtappというライブラリがあるのですが、思ったより認知度が低いようなのでここで紹介させていただきます。 まとめ tappは、従来のPrint Debugの問題点を解決する画期的なライブラリです。 次のような経験がある方は、いますぐGemfileにtappを追加することをお勧めします。 メソッドチェーンの間のオブジェクトの状態を見るためだけに一時変数を使ったことがある ppやp、putsを消し忘れてリポジトリにコミットしてしまった tappとは tappは、Print Debugを簡単に行うためのRubyライブラリです。 リポジトリはhttps://github.com/esminc/tappになります。 tappの歴史 tappの作者である@ursmは、2008〜2009年頃に社内向けのモンキーパッチとしてtappを生みだし、Rails勉強会41.

  • GCCのコンパイルオプションで関数トレーサ - torutkのブログ

    このの「#77 関数へのenter/exitをフックする」で、GCCのコンパイルオプション-finstrument-functionsを使い、関数が呼び出された時、関数から復帰するときにフックを入れる方法が紹介されています。フック関数のシグニチャは以下です。 void __cyg_profile_func_enter(void* func_addr, void* call_site); void __cyg_profile_func_exit(void* func_addr, void* call_site); このフック処理に渡されるアドレスから関数名を出して、関数の実行を追う簡易な関数トレーサを作成します。アドレスから関数に変換する方法で一番簡単そうなのは、同じの「#62 dlopenで実行時に動的リンクする」でglibcのGNU拡張として紹介されているdladdr関数です。 #i

    GCCのコンパイルオプションで関数トレーサ - torutkのブログ
  • メモリ破壊の現場を見つけるTips - I am Cruby!

    RubyAdventJP, GC, Ruby(この記事はRuby Advent Calendar jp: 2009 : ATNDの4日目です。前日はmrknさんでした) 健全なるRubyistであれば、RubyのGCをいじることが週に一度はあるでしょう。そのときに困るのが、GCをいじってしまったことによるバグの修正です。GCをいじるというのは想像以上に難しく、少しでも書き間違えるとメモリ破壊が発生します。そのときに使えるTipsをこの記事で書くことにします。 みなさんご存じの通り、メモリ破壊というのは原因を特定するのが困難です。これは問題が発覚する場所とメモリ破壊が起こった現場が位置的に遠いことに起因しています。偉大なるハッカーのまつもとさんですら、その発見は困難です。 [ruby-dev:38628] Re: [BUG: trunk] called on terminated objec

  • Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)

    Perlではメモリリーク検出ツールがいくつか開発されているので、top(1)の結果を眺めるよりそういうツールを使うほうが楽である。 さて、メモリリークが発生しているとき、その可能性としてはだいたい以下の4つが挙げられる。 Perlレベルでの循環参照 グローバル変数に値をどんどん足しているとき*1 XSレベルでリファレンスカウントの管理ミス XSレベルでmalloc()したメモリの管理ミス この1-3についてはすべてPerlインタプリタ内の出来事であり、Test::LeakTraceを使って検出できる。4を検出するのは難しいが、Test::Valgrindが役に立つ。 Test::LeakTraceのSYNOPSISは歴史的経緯によりごちゃごちゃしているが、テストで使うべき関数はno_leaks_ok()とleaks_cmp_ok()だけである。 たとえば、以下のようにして使う*2。 #!p

    Perlのメモリリークを見つける方法 - Islands in the byte stream (legacy)
  • Perlの中をgdbで覗く | BLOG - DeNA Engineering

    こんにちは。DeNAの樋口です。 Perlで書かれたアプリを動かしているときに、Perlのプロセスが今コードの何処を実行中なのか知りたいことがよくあります。そのような場合には、gdbで実行中のプロセスにアタッチし、Perlインタプリタインスタンスの内部を覗くことによって調べることができます。また同様の方法で、プロセスのコアダンプを取り、後でじっくりデバッガで調べることも可能です。 デバッグシンボル付きのPerlを用意する まず前提として、Perlの実行形式にデバッグシンボルが付いている必要があります。無い場合でも不可能ではありませんが、現実的には難しいでしょう。デバッグシンボル付きのPerlを用意する方法はOSによりますが、例えばrpmを使っているGNU/Linuxディストリビューションであればperl-debuginfoのように分離されたパッケージにデバッグシンボルが入っていることが多い

    Perlの中をgdbで覗く | BLOG - DeNA Engineering
  • DDD - Data Display Debugger - GNU Project - Free Software Foundation (FSF)

    What is DDD? GNU DDD is a graphical front end for the command-line debugger GDB and the variant CUDA-GDB. Besides usual frontend features such as viewing source texts, DDD has become famous through its interactive graphical data display, where data structures are displayed as graphs. Other command-line debuggers can be used with DDD, but the interface development is no longer active in version 3.4

    kamipo
    kamipo 2011/04/12
  • gdbでxsをデバッグ - フリーフォーム フリークアウト

    移転しました http://please-sleep.cou929.nu/20090805.html

    gdbでxsをデバッグ - フリーフォーム フリークアウト
  • prototype.jsからjQueryに移行するたったひとつの冴えたやりかた - os0x.blog

    どうもこんにちは、os0xです。 実は(Twitterに書いただけで)ブログに書いてなかったのですが、3ヶ月ほど前からクックパッドで働いています*1。なんかもう今更ですよね、すみません。 さてさて、クックパッドですが、つい一昨日までprototype.jsを使っていました。で、昨日jQueryへの移行をリリースしたところだったりします。 というわけで、その辺の話を少し書いてみたいと思います。 そもそも、なんでjQueryに移行するのか まあ、prototype.jsとjQueryどちらを使うかと問われたら、大抵の人はjQueryと答えますよね。確かにjQueryの使いやすさは魅力的です。使いやすいということは、みんなでjQueryを使ってサービスを作ることができます。特定の誰かに依存してボトルネックになったりすることがないなら、それは素晴らしいですね。 しかし、ライブラリを変えるのは簡単な

    prototype.jsからjQueryに移行するたったひとつの冴えたやりかた - os0x.blog
  • 2分でわかる uupaa.js の Debug Navigation :: handsOut.jp

    スライド1: 2 分でわかる uupaa.js~ Debug Navigation ~uupaa.js@gmail.com スライド2: まず スライド3: 階層ナビゲーション• スタックトレースを表示する機能– Firebug などに搭載されている– 今日の主役は、この「ナビ子」さん スライド4: uupaa.js と ナビ子function xboot(uu) {}uu.css.size.get(uu.id("id"));• ナビ子「今ここよ」• ユーザ「ありがとう」uucsssizeget < xboot < _fire スライド5: $(function() {});jQuery と ナビ子$("#id").width();• ナビ子「今ここよ」• ユーザ「…え ? 」• ナビ子「え ? 」curCSS() < (?)() < each() < getWH< css() <

  • メンテナンス中

    申し訳ございません。 只今メンテナンス中です。

  • JavaScriptのデバッグTips - os0x.blog

    JavaScript Advent Calendar 2010 8日目担当のid:os0xです。 JavaScriptネタは案外範囲が広くて色んなネタがあるので、毎回が楽しみですね。 さて、私はデバッグをネタにしたいと思います。テストではなくデバッグです。誰かが書いたコードをメンテナンスしなきゃー、とか。jQueryプラグイン導入しようとしたけど、なんかうまく動かないーみたいなケースのおはなしです。 JavaScriptのデバッグは大変なので、多くの方が日々苦労されていると思います。なぜJavaScriptのデバッグが大変なのか少し整理してみましょう。 ブラウザ依存 まず、なんといってもJavaScriptはウェブブラウザ上で実行されるので、環境が一定ではありません。特定の環境だけを対象にJavaScriptを書くことは滅多にありません。PC向けではIE、Firefox、Chrome、Sa

    JavaScriptのデバッグTips - os0x.blog
  • インフラエンジニアがSegmentation fault をなんとか治してみる - メモとかそんな感じなやつ

    普段Webサーバを運用していて、めんどくさいトラブルのひとつに「Segmentation fault」があります。 あれー?なんか500エラーがでるなーなんて思ってログを見るとSegmentation faultになってるときは死にたくなります。 そもそもSegmentation faultはメモリ上にあるデータに対して不正が行われたときに起こるもので、 インフラエンジニアにとってはなかなか手がだせないところでもあります。 それでもなんとかして治さないといけないわけなので せめてどのプログラムが悪さしてるかどうかぐらいは調べ上げてみます。 apacheでのログ apache + mod_perl での環境です。 こんな感じでエラーがでます。 #tail error_log [notice] child pid 26028 exit signal Segmentation fault (11

    インフラエンジニアがSegmentation fault をなんとか治してみる - メモとかそんな感じなやつ
  • gdbでアセンブルしてSEGVしている箇所を特定するTips - I am Cruby!

    gdbこれは-gでコンパイルされていない所でSEGVが発生するときにどの行で落ちているのか見当を付ける方法。 こんなコードを用意してみた。特徴三つのSEGVの可能性がある関数呼び出しありもちろん-gでコンパイルしていない前の記事の使いまわし  #Include #include struct hoge { int id; char *comment; }; void throw_segv(char *comment) { int test[1000]; if(!strcmp(comment, "Hellow!")) test[-100000] = 9; } int main(void) { struct hoge *hg; hg = malloc(sizeof(struct hoge)); hg->id = 2565; hg->comment = "Hellow!"; throw_se

  • CGDB - curses interface to gdb - メモ帳

    http://cgdb.sourceforge.net/ curses を使った gdb インターフェイス。 vi キーバインドで gdb を操作できる。かなりいい感じ。 $ cgdb -- a.outで起動。上側のウィンドウがソースウィンドウ(CGDB Mode)。下側が GDB Window (GDB Mode)。 i と Esc で2つのウィンドウ間を行き来できる。 ソースウィンドウで使えるコマンドの一部: Space ブレークポイント設定 j k カーソル移動 / ? 検索 o ファイル選択ウィンドウを開く T デバッギへの入力をタイプするための TTY ウィンドウを開く i GDB ウィンドウへ s c n r step continue next run (:set shortcut しているときのみ有効) : コロンコマンド。:set :run :q など 設定ファイルは ~

    CGDB - curses interface to gdb - メモ帳
  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

  • Xdebugのフロントエンド·Webgrind MOONGIFT

    どのようなWebシステムであっても、速度は速い方が良い。最近はハードウェアのリソースが潤沢で、油断するとついつい富豪的なプログラミングになりがちなので、しっかりと気を引き締めないと思わぬボトルネックになったりする。 PHPでそうしたシステムのプロファイリングを行うのに利用するのがXdebugだ。そしてそのXdebugと一緒に利用したいのがこのソフトウェアだ。 今回紹介するオープンソース・ソフトウェアはWebgrind、WebベースのXdebugフロントエンドだ。 WebgrindはXdebugさえ動作していれば後の設定は殆ど不要という、ごく簡単に利用できるソフトウェアだ。Xdebugの吐き出すファイルのパスさえ設定すれば良い。後はWebgrindの画面にアクセスするだけだ。 実行したファイルのパスや、かかった時間などが一覧され、さらに各実行単位でコストが見られる。コストが特に大きい処理の中

    Xdebugのフロントエンド·Webgrind MOONGIFT
  • PHPのデバッグに便利な関数 – 応用編 - EC studio 技術ブログ

    前回のデバッグ基編に続きまして、今回は応用編です。 debuglib 変数表示はprint_rやvar_dumpなどを使用することが多いと思いますが、 <pre>などで囲ったとしてもとても見やすいとは言えません、、。 そこで、debuglib.phpを使用すればとても見やすく表示してくれます。 ※debuglibはこちらのページから入手できます print_rと同様に、文字列・配列・オブジェクトなどなんでも表示できます。 使い方は簡単で、