タグ

gdbに関するmasudaKのブックマーク (11)

  • SEGV探偵が往く - なるせにっき

    人は誰しも108つの夢を持つと言いますが、読者の皆さんにも探偵を夢見た人は多いことでしょう。実際問題として探偵業をやろうと思ったら地道な聞き込み&張り込みの日々でしょうし、逆に派手な探偵業は陰謀&殺人で恐ろしい。わたしも自分の命は大事ですからどうするか。そう、探偵ごっこをするわけですね。 というわけでSEGV探偵です。死ぬのはプロセスなので安心。Rubyを使っていればSEGVなんて見慣れたものですが、いざ捜査しようと思うと意外とその辺には転がっていないもの。(むかしはつかみ取り出来るくらいいたそうですよ)とはいえ今でもいわゆる「バグ鉱脈」みたいなものはありまして、その一つが「最新のコンパイラでビルドしてみる」です。 今日はGCCの開発版であるGCC8を試してみましょう。FreeBSDだとsudo pkg install lang/gcc8-develで簡単に入れられるのですが、他の環境だと

    SEGV探偵が往く - なるせにっき
  • はじめてのgdbデバッグ | blog: takahiro okumura

    仕事でagを利用していた時に出会ったバグを、先輩たちの力を借りてなんとかした話です。 先に結論を書くと、業務に用いていたagのバージョンが古いのが原因のようでした。version 0.15より古いとlockの実装に問題があるようです。 以下、問題の発覚からなんとかするまでの記録です。 発端 agが途中で止まる 時折、agのファイル操作が先へ進まなくなってしまう不具合がありました。 操作中に対象ファイルのロック状況が変わるとデッドロックが発生しているのでは?と想像。 気になってstraceでプロセスにアタッチすると、以下で停止していることが分かりました。 [pid 4589] futex(0x80517e4, FUTEX_WAIT, 32159, NULL FUTEX_WAIT futex(2)を引くと、futex(2)の書式に対する操作FUTEX_WAITの説明があります。

  • パーフェクトなCRubyを目指して - 1行のバグ修正に潜む苦労 - - I am Cruby!

    この記事はパーフェクトRuby Advent Calendar 2013 - Adventar の9日目です。 前の日のエントリーはパーフェクトRuby Advent Calendar 2013(8日目) Let's Sinatra Life - たちブログです。 まだ参加できますので、みなさまもぜひ。 パーフェクトRuby Advent Calendar 2013 - Adventar パーフェクトRubyRubyの仕様に大変詳しい同僚への献をインターセプトして読ませていただきました。 さまざまな機能をまとめたとてもよいだと思います。 著者のみなさまの苦労が偲ばれました。パーフェクトRuby (PERFECT SERIES 6)作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一出版社/メーカー: 技術評論社発売日: 2013/08/1

    パーフェクトなCRubyを目指して - 1行のバグ修正に潜む苦労 - - I am Cruby!
  • Mitzyuki's Blog :: gdb の意外に便利な使い方

    gdb の意外に便利な使い方 開発環境には必ずインストールされている gdb (1) コマンド。 来の機能はプログラムのシンボリックデバッガなのだが、 若干意外とも言える便利な使い方がある。 それはプログラマなら重宝する 16 進数電卓としての用法。 $ gdb -q (gdb) p/x 10 ← 10 を 16進数で表示 $1 = 0xa (gdb) p/x 20 ← 20 を 16進数で表示 $2 = 0x14 (gdb) p/x $1 + $2 ← 10 + 20 を 16進数で表示 $3 = 0x1e (gdb) p $2 - $1 / 3 ← 20 - (10 / 3) を 10進数で表示 $4 = 17 (gdb) p ($2 - $1) / 3 ← (20 - 10) / 3 を 10進数で表示 $5 = 3 (gdb) q 例にある様に一度利用した値は変数 $n に保存さ

    masudaK
    masudaK 2012/05/29
  • x86 calling conventions - Wikipedia

    This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages) This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (February 2008) (Learn how and when to remove this template mes

  • x86系CPUのネイティブコードを解析する

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    x86系CPUのネイティブコードを解析する
  • Hacking Ruby with Python

    Short introduction of GDB/Python, with actual examples for debugging and (sort of) running Ruby-as-a-debugger-of-oneself on top of it. This was prepared for YamiRubyKaigi 2011 (Darkness of RubyKaigi2011), but unfortunately gave up doing actual presentation due to too many pages.

    Hacking Ruby with Python
    masudaK
    masudaK 2012/04/15
    「変態的な可能性を感じた」とか吹いたw
  • gdb python scriptingの機能を使ってllvmをデバッグする - LLVMとコンパイラとVM

    gdb.Command.__init__ (self, "test_events", gdb.COMMAND_STACK)

  • Apache HTTPD Debugging Guide - The Apache HTTP Server Project

    Apache Debugging Guide¶ This document is a collection of notes regarding tools and techniques for debugging Apache httpd and its modules. Got more tips? Send 'em to docs@httpd.apache.org. Thanks! Using gdb Getting a live backtrace on unix Getting a live backtrace on Windows Debugging intermittent crashes Using truss Getting the server to dump core Solaris and coredumps Getting and analyzing a TCP

  • attach

    なんらかの理由でgdbからいきなり起動できないプログラムや,今運用環境で動いているプログラムをデバッグしたい場合などには,動いているプロセスにattachしてデバッグすることができる. こんな場合に サンプルプログラム attachまでの3手順 attach後はどうするんだ? こんな場合にattachは以下のような場合に重宝するのではないだろうか. 起動手順が複雑で,起動用のスクリプトなどを使用しないと(現実的に)起動できないプロセス. 運用中のプロセスのコアを取りたい. 運用中のバグが出たが該当プロセスだけど止めることができない. サンプルプログラムでは以下のサンプルプログラムを起動し,実際にattachしてみる. includeincludeint main(int argc, char *argv[]) { int sleepSecond; if (argc > 1) { sleep

    masudaK
    masudaK 2012/04/01
  • PHPでのデバッグ方法

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog おひさしぶりです。オークション担当の山崎 賢です。 前回はPHP Serialize についてでしたが、 今回はPHPでのデバッグに関してお話します。 基PHPはインタプリタ(厳密にはPHPは内部で一度コンパイルしていますのでインタプリタとは言い切れませんが) のデバッグではログ埋め込みが手軽です。 しかし、まれにSIGSEGVやSIGBUSなどでPHPスクリプトが落ちることがあり、途方にくれます。 地道にログを埋め込んでいき、箇所を特定するのも手法の1つですが、今回はgdbを用いたデバッグ方法を記載したいと思います。 ■STEP1 まずは、プログラムが落ちることを目的として以下のようなPHP Moduleを作成します。 ・ ・

    PHPでのデバッグ方法
  • 1