タグ

debugに関するyzxのブックマーク (26)

  • 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)
    yzx
    yzx 2012/07/01
  • Perlの中をgdbで覗く | BLOG - DeNA Engineering

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

    Perlの中をgdbで覗く | BLOG - DeNA Engineering
  • Software Diagnostics Institute | Structural and Behavioral Patterns for Software Diagnostics, Forensics and Prognostics. Software Diagnostics Library.

    Our tools are only as good as our pattern language. Analysis patterns for the quality of software diagnostics in endpoint devices, enterprise, and cloud environments. Diagnostics is the mother of problem solving. All areas of human activity involve the use of diagnostics. Proper diagnostics identifies the right problems to solve. We are now a part of a non-profit organization dedicated to the deve

    yzx
    yzx 2012/03/17
  • MiniDumpWriteDump function (minidumpapiset.h) - Win32 apps

    Writes user-mode minidump information to the specified file. Syntax BOOL MiniDumpWriteDump( [in] HANDLE hProcess, [in] DWORD ProcessId, [in] HANDLE hFile, [in] MINIDUMP_TYPE DumpType, [in] PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, [in] PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, [in] PMINIDUMP_CALLBACK_INFORMATION CallbackParam ); Parameters [in] hProcess A handle to the process for w

    MiniDumpWriteDump function (minidumpapiset.h) - Win32 apps
  • MINIDUMP_TYPE (minidumpapiset.h) - Win32 apps

    Important  The minidump code has evolved greatly over the years since its inception. Many of the constants listed on this page were added later and are not available in all versions of DbgHelp.dll. Those that did not exist in the original code are labeled accordingly along with the version of DbgHelp.dll that they first were implemented in. The listed version numbers corresponds to the Debugging T

    MINIDUMP_TYPE (minidumpapiset.h) - Win32 apps
  • 技術/Windows/メモリダンプ取得方法メモ - Glamenv-Septzen.net

    id: 918 所有者: msakamoto-sf 作成日: 2011-02-13 12:05:13 カテゴリ: Windows プログラミング [ Prev ] [ Next ] [ 技術 ] Windows XP SP3, Windows 7 上でのメモリダンプ取得方法メモ。 基的に "Debugging Tools for Windows" 無しの状態を想定しています。つまりユーザー環境でアプリケーションクラッシュやハングアップ、あるいはBSODが発生した瞬間を捕まえるための設定をメモしていきます。 なお一部のシナリオではMicrosoftから公開されている"UMPD : User Mode Process Dumper"というツールを使っています。 以下の環境で動作確認しています。いずれも日語版のWindowsを使っています。 Windows XP SP3 : x86(32bi

  • Debugging OCA minidump files | Microsoft Docs

  • Sysinternals ProcDump v4.0 - Sysinternals ProcDump v4.0 用のプラグインを作成する

    MiniDumpWriteDump を使用する際、ターゲットではなく、キャプチャ プログラムのアーキテクチャに対応するダンプが作成されます。そのため、32 ビットのプロセスをキャプチャする際は 32 ビットのキャプチャ プログラムを使用し、64 ビットのプロセスをキャプチャする際は 64 ビットのキャプチャ プログラムを使用します。"64 ビット版 Windows 上の 32 ビット版 Windows" (WOW64) をデバッグする場合は、32 ビット プロセスの 64 ビット ダンプを作成する必要があります。 (意図的かどうかを問わず) アーキテクチャと対応していない場合、64 ビット ダンプで 32 ビットのスタックにアクセスするために、デバッガーで対象のコンピューター (.effmach x86) を変更する必要があります。多くのデバッガー拡張機能ではこのシナリオを実行できないので

    Sysinternals ProcDump v4.0 - Sysinternals ProcDump v4.0 用のプラグインを作成する
  • アクセス違反 - まずはスタックバックトレースから - Web/DB プログラミング徹底解説

    アクセス違反などでクラッシュして終了したプロセスのダンプをデバッガで開くと、 クラッシュしたスレッドにコンテキストがセットされた状態で開かれます。 このため、ひとめみただけで、クラッシュの直接の原因を特定することが可能です。 その直接の原因にいたる経緯はひとめではわかりませんが、なぜアクセス違反を発生させたのか、などは ひとめでわかります。 「ひとめでわかる」 と言われても、デバッガを使ったことが無ければ、 なかなかピンとこないと思いますので、簡単な例をみてください。 クラッシュ時の解析例 次のようなコードがあったとします。 #include <string.h> int main() { strcpy( NULL, NULL ); return 0; } このコードでは strcpy 関数を呼び出していますが、文字列の元のアドレスも書き込み先も NULL がセットされています。 NULL

    アクセス違反 - まずはスタックバックトレースから - Web/DB プログラミング徹底解説
  • Collecting User-Mode Dumps (Windows)

    Starting with Windows Server 2008 and Windows Vista with Service Pack 1 (SP1), Windows Error Reporting (WER) can be configured so that full user-mode dumps are collected and stored locally after a user-mode application crashes. Applications that do their own custom crash reporting, including .NET applications, are not supported by this feature. This feature is not enabled by default. Enabling the

    Collecting User-Mode Dumps (Windows)
  • ヒープコラプションのデバッグ手順 ~ 例外 STATUS_HEAP_CORRUPTION (0xc0000374)

    マイクロソフトのフォーラムにて、例外 0xc0000374 でクラッシュする問題が取り上げられていました。 私はスレッドに乗り遅れタイムリーに返信することができなかったのですが、興味があったので試しに動作確認をしてみました。 デバッグの基のところを含め、簡単に解説します。 この資料では Debugging Tools for Windows はインストールされているものとしていますので、まだお持ちで無い方はインストールしてください。 例外 0xc0000374 でクラッシュする (落ちる) 例外 0xc0000374 は ntstatus.h にて STATUS_HEAP_CORRUPTION、メッセージテキスト "A heap has been corrupted" (ヒープが壊れています) と定義されています。 (日語メッセージは私が訳してます) すなわち、0xc0000374 で

    ヒープコラプションのデバッグ手順 ~ 例外 STATUS_HEAP_CORRUPTION (0xc0000374)
  • デバッガ:デバッグ情報:windows

    windowsでデバッグ情報を扱う場合には、このdbghelpというライブラリを使います。シンボル情報の読み込みや型情報の取得などはすべてこのライブラリが担っています。 dbghelp注意事項1注意事項2典型的な使い方型情報について図表の見方基型ポインタ型配列型関数型pdbdump代表的なAPI このライブラリには多少扱いづらいところがあるため、一番最初にはまりやすい注意事項について書いてあります。 参考 msdn: Debug Help Library .NET & Windowsプログラマのためのデバッグテクニック徹底解説 dbghelp 注意事項1 実は、似たようなライブラリとしてimagehlpというのもあるのですが、これは古いバージョンのdbghelpだと考えていいでしょう。昔はimagehlpといえばデバッグ情報やイメージ情報を統合的に扱うライブラリだったのですが、ちょっと巨

    デバッガ:デバッグ情報:windows
  • メモリ内をトレースログに吐きたい - OKWAVE

    「メモリダンプを行うプログラムの作成」自体が目的であれば、回答No1.と回答No.2の組み合わせでできますよね。 「デバッグのため、事後にメモリの内容を見たい」ということが目的であれば、自前でメモリを参照しダンプファイルを作成するのはあまり効率が良くありません。DbgHelpライブラリにあるMiniDumpWriteDump()でミニダンプファイルを作成すれば、Visual Studio .NETの統合環境で直接、ソースレベルで変数の内容を確認したり、実行当時のメモリ内容を確認したりできるのでお勧めです。 普段なら「詳細はヘルプを見れば分かります」と書くところなのですが、あまり馴染みのないAPIなのでプログラムを書いてテストしてみました。(インデントは全角空白なのでコピー&ペースト時は注意。) DWORD WINAPI MinidumpThread(PVOID pv) { HANDLE h

    メモリ内をトレースログに吐きたい - OKWAVE
  • クラッシュ ダンプの分析

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 XNA デベロッパー コネクション (XDC) 2005 年 12 月 リリース前にすべてのバグを見つけることはできません。つまり、例外をスローするバグをリリース前にすべて見つけるのは不可能です。Microsoft では、ユーザーによって発見された例外に関する情報を収集するための関数を Platform SDK で提供しています。MiniDumpWriteDump 関数は、プロセス空間全体を保存することなく、必要なクラッシュ ダンプ情報をファイルに書き込みます。このクラッシュ ダンプ情報ファイルは、ミニダンプと呼ばれます。 この技術関連記事では、以下のトピックについて説明します。 ミニダンプの作成 スレッド

    クラッシュ ダンプの分析
  • Joel on Software - やさしいバグトラッキング

    公開 by それはそれは優秀なテスタのジル 2000/11/1 * Bee Flogger開始 * 文字"a"だけからなる名称未定ドキュメントを作成 * ツールバーのFTPボタンをクリック * サーバにftpを試みる 観察されたバグ:ftpサーバが応答しなくなる。ps -augxで見ると、走ってさえいなくて、ルートディレクトリにコアができている。 期待される動作:クラッシュしない 開発主任ウィリーに割り当て by それはそれは優秀なテスタのジル 2000/11/1 解決(修正しない) by 開発主任ウィリー 2000/11/2 (昨日) こっちのコードじゃないよ、ジル。Linuxのproftpdの問題だね。 再開 (開発主任ウィリーに割り当て) by それはそれは優秀なテスタのジル 2000/11/2 (昨日) そうは思いません。普通のftpクライアントで接続してproftpdをクラッシュ

  • 2011-08-01 - valgrind 論文読んだメモ - 兼雑記

    時々 valgrind はオーパーツだとかそういう主張をしてたりします。コードとか論文とかチラ見くらいはしてたのですが、まあちゃんと眺めてみたのでメモ。 Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation http://valgrind.org/docs/valgrind2007.pdf 1. イントロ 1.1 DBA and DBI Dynamic binary analysis って種類のツールがあるんですよ、と紹介。その手のツールは Dynamic binary instrumentation で実装されてることが多いですよ、と。つまり実行時にコード埋めるって話。 DBI ってのはすげー汎用性あるんですけどイマイチ注目されてなくてよろしくない、と。 1.2 Shadow Value Tools an

    2011-08-01 - valgrind 論文読んだメモ - 兼雑記
  • Androidアプリのメモリリーク対策手法 | Bescottee

    googleAndroid開発者向け ブログに「Memory Analysis for Android Applications」という記事があったため、自分のために訳しました。参考になれば幸いです。エントリを見るうえで、eclipse の基的な使い方を理解している必要があります。 Androidアプリのメモリ解析手法 Dalvikランタイムは、ガベージコレクトしてくれるかもしれませんが、それはメモリ管理を行わなくてもよいというわけではありません。モバイル端末上でのメモリ利用状況は特に注意を払わなければなりません。投稿では、開発するアプリのメモリ利用状況の把握を支援する Android SDK で提供しているメモリプロファイリングツール群のいくつかを紹介させて頂きます。 メモリ利用時の問題はいくつか明らかになっています。例えば、もしあなたのアプリがユーザの画面タッチ操作のたびにメモ

  • この例外を投げたのは誰だー スタックトレースで遊ぼう - お前の血は何色だ!! 4

    まぁ、不慮の例外といいますか、突然飛んでくる例外というのはいろいろあるわけで。 そりゃ、例外なんて名前がついているから、例外的に突然飛んでくるのは当たり前だろうとこともありますね。 では、この例外をだれが投げたかを C++ で追跡することはできるのでしょうか。 _ □□    _      ___、、、 //_   [][]//   ,,-―''':::::::::::::::ヽヾヽ':::::/、  誰  投   こ //  \\  //  /::::::::::::::::::::::::::::::i l | l i:::::::ミ  だ   げ   の  ̄      ̄   ̄/ /:::::::::,,,-‐,/i/`''' ̄ ̄ ̄ `i::;|  あ  た   例 ―`―--^--、__   /:::::::::=ソ   / ヽ、 /   ,,|/   っ  の   外 /f ),f

    この例外を投げたのは誰だー スタックトレースで遊ぼう - お前の血は何色だ!! 4
  • MySQLのInnoDBでのデッドロック - mixi engineer blog

    こんにちは、mixi開発部にてアプリケーション開発をしていますyouheiです。 今回は、MySQL-5.0.45のInnoDBで連番を管理するテーブルのパフォーマンス測定をしていたのですが、その際に少し変わったデッドロック問題に遭遇しましたので、そのあたりをネタとして書いてみたいと思います。 まずは、今回使用したデータベースのスキーマは下記のようなものです。 CREATE TABLE num ( id bigint unsigned NOT NULL default '0' ) Engine=InnoDB; AUTO_INCREMENTは使用していません。 そこに1レコードだけ登録します。 INSERT INTO num (id) values (1); そして実際連番を取得する際には、 UPDATE num SET id = LAST_INSERT_ID(id+1); といったクエリを

    MySQLのInnoDBでのデッドロック - mixi engineer blog
  • USBによるカーネルデバッグのまとめサイトのまとめ - やや温め納豆

    1万円近い謎のケーブルが届いたのでまとめる。 USBによるカーネルデバッグができると何が嬉しいか 被デバッグ対象(ターゲット)がシリアルインターフェースを持ってない場合でもカーネルデバッグが可能。逆に言うと、ターゲットがシリアルインターフェースを持っている場合は選択肢に入れる必要は無い。 何が必要か、どうやって要件を満たしているか確認するか USB 2.0 カーネル デバッグ 前編 USB 2.0 カーネル デバッグ 後編 デバッグケーブルはどのように入手するか 現時点ではPLX Technology 社製 NET20DCしか選択肢は無い。 どのケーブルを USB 2.0 カーネル デバッグに使用できますか。 USB 2.0 デバッグ接続用に特別に設計されたデバッグ デバイスを使用する必要があります。 (中略) PLX Technology は、Net20DC という USB デバッグ デ

    USBによるカーネルデバッグのまとめサイトのまとめ - やや温め納豆
    yzx
    yzx 2009/04/26