タグ

gdbに関するshimookaのブックマーク (12)

  • インフラエンジニアが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デバッガを利用してPHP内部の動きを知る - PHPソースコードリーディング入門その2 - id:anatooのブログ

    前回: PHPソースコードリーディング入門(とっかかり編) - id:anatooのブログ PHPのソースコードを読んでいく際に、どうしてもソースコードを読むだけではよくわからない部分というのが出てくる。この記事ではPHPをデバッガで動かして内部の働きを明らかにする方法を書く。 ソースコードの取得 gitから取ってくる。 $ git clone https://github.com/php/php-src.git デバッガで動かせるようにビルドする 余計な拡張は無しで、デバッガで動かせるようにビルドする。configure時に--enable-debugオプションを渡す。 $ cd php-src $ ./buildconf $ ./configure --disable-all --enable-debug $ make GDBで動かす makeした後、コマンドラインで動かせるバイナリは

    GDBデバッガを利用してPHP内部の動きを知る - PHPソースコードリーディング入門その2 - id:anatooのブログ
  • PHPソースコードリーディング入門(とっかかり編) - id:anatooのブログ

    PHPのソースコードを読むためのとっかかりの話。 ソースコード取ってくる gitから取得できる。 $ git clone https://github.com/php/php-src.git とりあえずビルドしてみる ビルドに必要なツールをインストールした後、buildconfスクリプトを叩いてconfigureスクリプトを生成したのち、通常通りconfigureを叩いてmakeする。例えば、余計な拡張を一切ビルドせずデバッガで動かせるようにビルドしたい場合は以下のようになる。 $ cd php-src $ ./buildconf $ ./configure --disable-all --enable-debug $ makeコマンドラインから叩けるバイナリは、"sapi/cli/php"にある。 $ sapi/cli/php -r "echo 'hello world';" hello

    PHPソースコードリーディング入門(とっかかり編) - id:anatooのブログ
  • How to Debug C Program using gdb in 6 Simple Steps

    Earlier we discussed the basics of how to write and compile a C program with C Hello World Program. In this article, let us discuss how to debug a c program using gdb debugger in 6 simple steps. Write a sample C program with errors for debugging purpose To learn C program debugging, let us create the following C program that calculates and prints the factorial of a number. However this C program c

  • PHPでのデバッグ方法

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

    PHPでのデバッグ方法
  • 「?:」演算子(続きの続きの続きの続き) - ます’s Blog - どうでもいい記事100選

    少し時間が空いてしまいましたが、まだまだモチベーションは下がっていないようで一安心です。先日の続きです。 今回は(前回に宣言した)変数の変更(改竄)あたりをやってみたいと思います。 どの関数を対象にしようか迷いましたが、適当にround関数をターゲットにしてみます。。。って、特に深い事をやっている訳ではないのでhnwさんに登場されるとマジで焦ります。(w 以前「strings」コマンドを使って関数の実体を探した事を思い出したので、今回その方法でやってみました。 % cd $HOME/php-5.3-dev % strings ./php-cli | grep 'round' zif_round round body {background-color: #ffffff; color: #000000;} a:link {color: #000099; text-decoration: no

    「?:」演算子(続きの続きの続きの続き) - ます’s Blog - どうでもいい記事100選
  • 2008-08-28

    これらの変更(1・2)は、ちょっと意味が分からない。。。 変更履歴とコメント内容から察するに、Win版PHPOracleと連携する場合は、バージョンの違いによって有効にするDLLを使いわけろって事なのかな。。。ちょっと面倒な気が。 後、今後も増えそうな気がする。。。勘弁。_| ̄|○ From: Christopher Jones Date: Thu Aug 28 01:31:31 2008 Subject: cvs: php-src(PHP_5_3) / php.ini-dist php.ini-recommended Groups: php.cvs sixd Thu Aug 28 05:31:31 2008 UTC Modified files: (Branch: PHP_5_3) /php-src php.ini-recommended php.ini-dist Log: MFH:

    2008-08-28
  • gcc+gdbによるプログラムのデバッグ 第1回 ステップ実行、変数の操作、ブレークポイント

    しかし、ブレークポイントという機能はデバッガの手助けなしでは実現できません。 ブレークポイントとはプログラムの強制一時停止を行うポイントで、実行中のプログラムがブレークポイントに遭遇するとプログラムは一時停止され、デバッガによるプログラムへの介入を行えるようになります。 ブレークポイントは次のような場所に設定できます。 指定した行番号のプログラムを実行しようとする瞬間 関数を呼び出した瞬間 その他、C++などでは「例外が発生した瞬間」などにもブレークポイントを設定することができます。 行番号ブレーク ブレークポイントとしてよく使用されるのは、「プログラムの特定の位置」です。 例として、bubblesort.cプログラムのsort関数内で、隣り合う二つの要素を比較している箇所にブレークポイントを設定してみます。 25|/* bubble sort */ 26|void sort(int *a

  • 「?:」演算子(続き) - ます’s Blog - どうでもいい記事100選

    先日の件ですが。 最後はprintfを盛大に仕込むという荒業で乗り切ったものの、今後も同じ作業を行い続けるのは効率が悪すぎるので、gdbを使って効率よく作業できないか。。。と探っていたところ、できるようです。しかも簡単に。_| ̄|○ とりあえず、前準備としてPHPバイナリを用意(--enable-debugオプション付きでビルド)。 % cd $HOME % mkdir ./php-5.3-dev % mkdir ./php-5.3-dev/work % cd ./php-5.3-dev/work % wget http://snaps.php.net/php5.3-200808250230.tar.gz % gzip -dc ./php5.3-200808250230.tar.gz | tar xvf - % cd ./php5.3-200808250230 % ./configure

    「?:」演算子(続き) - ます’s Blog - どうでもいい記事100選
    shimooka
    shimooka 2008/08/25
    いやいや。こういう普遍的な情報を残して頂けるので非常にありがたいです
  • PHPの実行をPHPのソースコード(C言語)のレベルで見る方法 - suztomoのはてなダイアリー

    PHPはソースコードを読めばわかるとおりC言語で書いてあります。 そのC言語の中でPHPがどんな処理をしているのかをデバッガであるgdbを用いて見ることができるのでそれを紹介します。まぁ普通のgdbの使い方なんですが:p ソースをダウンロードしてコンパイル PHP-5.2.6のソースをダウンロードします。 まず./configureするとのMakefileができます。 このMakefileの中で-gオプションがついていることを確認しましょう。*1 これがデバッガ(gdb)用のオプションで、コンパイルされたバイナリファイルにソースコードとの対応付けができます。 次にmakeします。時間がかかります。 サンプルファイル makeしている間に次のようなPHPファイルを作成しましょう。 <?php $i = "12"; $k = intval($i); ?> これは文字列の"12"をintval関

    PHPの実行をPHPのソースコード(C言語)のレベルで見る方法 - suztomoのはてなダイアリー
  • ウノウラボ Unoh Labs: gdbの使い方

    今年の2月にマカーになったbokkoです。どうも僕の使っているフォントがほかの人には見づらいらしく、「そのフォントはねぇよw」と言われたり、外付けのキーボードを使っているせいか、「MacBookの意味なし!」と社内で言われてたりしています。 今日はgdbのお話です。gdbは非常に広く使われているデバッガで、特にC、C++のプログラムをデバッグするのによく使われています。 デバッガの使い方 プログラムをデバッグする際、例えば以下の方法が挙げられます。 1. ソースコードを読む 2. ソースコードに出力関数を仕込む(例えばprintf) 3. ソースコードを書き換えて実行してみる これで十分な場合もありますが、そうでない場合もあります。これらの方法ではプログラムを実行している最中にこちらからソースコードレベルでのアクションを起こすことが難しいので、例えば、プログラムをある時点で止めて変数の

  • https://www.cqpub.co.jp/hanbai/books/MIF/MIFZ200712.htm

  • 1