You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
CLI版のPHPをgdb上で動かしつつ、内部的なデータ構造を覗き見ることができるようなDockerイメージを作ってDocker Hubにアップロードしました。Docker環境さえあればすぐに動かすことができます。 このイメージを動かせばCのコードを書かなくてもPHP内部のデータ構造を確認することができます。PHPの内部構造を詳しく知りたい、というような人は参考にしてみてください。 準備 Macの人はDocker for Macを用意しましょう。他のOS上でも同様にDockerをインストールしてください。また、イメージの圧縮時サイズが200MB程度ありますので、それなりのネットワーク環境で遊ぶことをオススメします。 起動 Docker 1.10以降ではseccompにより一部システムコールが制限されているため、コンテナ内でgdbによるデバッグができません。期待通りにgdbを動かすにはコンテナ
いくつかのバグを含むツリーソートのプログラムを用意しました。 treesort1.c #include <stdio.h> #include <stdlib.h> struct node { int value; struct node *left; struct node *right; }; void treeadd(struct node**, int); void treewalk(struct node*); void treefree(struct node*); int main(int argc, char **argv) { struct node *rootp; int i; int array[15] = {50, 12, 18, 70, 41, 19, 91, 1, 7, 6, 81, 65, 55, 20, 0}; for (i = 0; i < 15; i++)
Starting GDB: gdb name-of-executable gdb -e name-of-executable -c name-of-core-file gdb name-of-executable --pid=process-id Use ps -auxw to list process id's: Attach to a process already running: [prompt]$ ps -auxw | grep myapp user1 2812 0.7 2.0 1009328 164768 ? Sl Jun07 1:18 /opt/bin/myapp [prompt]$ gdb /opt/bin/myapp 2812 OR [prompt]$ gdb /opt/bin/myapp --pid=2812 Command line options: (version
Ganttic is an online resource planning software, that you can use for managing project portfolios while planning resources with maximum efficiency. Create clear and comprehensive visual plans that give you an instant overview of all your resources and projects. Ganttic is a resource management software that excels in high-level resource planning and managing multiple project portfolios at once. In
vim で簡単に GDB を使いたいでゲソよ!! と、いう訳で vim 上で、GDB を行うツール(プラグイン?)の Pyclewn を試してみました。 前身として、clewn というものもあるみたいですが、こちらは Windows では使えないみたいです。 Pyclewn と clewn の違いなんかは、ここら辺を見れば分かりやすいと思います。 ☆導入 最新は、ver1.5 みたいですが、Windows だと ver 1.4 のインストーラしかないっぽい? ここら辺からインストーラを落としてきます。 ただ、インストール後の Pyclewn のバージョンを見てみると 1.5 になっていたりするのでよく分かりません……。 インストール時に特に設定とかはいらなかったと思います。 ☆インストール/実行環境 WindwosXP gvim 7.3(kaoriya) gcc 4.5.2 python
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 など 設定ファイルは ~
Welcome cgdb is a lightweight curses (terminal-based) interface to the GNU Debugger (GDB). In addition to the standard gdb console, cgdb provides a split screen view that displays the source code as it executes. The keyboard interface is modeled after vim, so vim users should feel at home using cgdb. Screenshot Features Syntax-highlighted source window Assembly view Visual breakpoint setting Keybo
最近PHPの中身を探ることが多くなってきました。以前PHPカンファレンス2011で話した「PHPをハックしてオレオレ文法を追加する」のなかでは、PHPの内部の動きを知るにはソースコードリーティングだけだと実際にどんな動きをしているのかわかりづらいので、そういう時はGDB使ってやるといいよ、というふうなことを言いました。とかいいつつ、実際にはGDBを直接使ってはいません。操作がプリミティブ過ぎて使いづらいからです。代わりに、GDBフロントエンドの一つであるCGDBというソフトウェアを利用しています。 この記事ではこのCGDBの概要について簡単に説明します。 CGDBの何が便利なのか GDBフロントエンドには、DDD、Insightなどがあります。また、純粋なGDBフロントエンドの他にも、Eclipse CDT、XcodeなどGDBフロントエンドとしての機能を有しているIDEなどがあります。こ
STLを使ったコード,たとえば std::vector<int> array;というコードがあったとして,gdbでデバッグ中に array[0] の値を確認したい場合はどうするか?実はこれが結構面倒なのだ. gdbでデバッグ中に,変数の値を確認したい場合は print コマンドを使う.例えば int a=12;というコードがあって,変数 a の値を表示させたい場合は gdb のコマンドラインで (gdb) print a とする.printコマンドは p と省略して記述できるので,通常は" p a "で確認する.さらに,変数が配列の場合なら "p 変数名[添字]" となる. 以上をふまえると, std::vector<int> array;というコードがあったとして,先頭の array[0] の値を確認したい場合は (gdb) p array[0]とやってしまう訳なのだが,結論からいうとこ
ユーザ・プログラムの中のデータを調べる通常の方法は、 printコマンド (省略形はp)、 またはそれと同義のコマンドである inspectコマンドを使用することです。 これは、 ユーザ・プログラムが記述された言語 (異なる言語の使用を参照) による式を評価し、 その値を出力するものです。 print exp print /f exp expは (ソース言語による) 式です。 デフォルトでは、 expの値は、 expのデータ型にとって適切な形式で表示されます。 `/f'を指定することで、 他の形式を選択することも可能です。 `/f'のfは形式を指定する文字です。 出力フォーマットを参照。 print print /f expを省略すると、 GDBは値ヒストリ (値ヒストリを参照) の最後の値を再表示します。 これは、 同じ値を異なる形式で調べるのに便利です。 データを調べるためのより低レベ
gd## page was renamed from STL Support STL Support Tools When you try to use GDB's "print" command to display the contents of a vector, a stack, or any other GDB abstract data structure, you will get useless results. Instead, download and install one of following tools to properly view the contents of STL containers from within GDB. GDB 7.0 will include support for writing pretty-printers in Pytho
普段Webサーバを運用していて、めんどくさいトラブルのひとつに「Segmentation fault」があります。 あれー?なんか500エラーがでるなーなんて思ってログを見るとSegmentation faultになってるときは死にたくなります。 そもそもSegmentation faultはメモリ上にあるデータに対して不正が行われたときに起こるもので、 インフラエンジニアにとってはなかなか手がだせないところでもあります。 それでもなんとかして治さないといけないわけなので せめてどのプログラムが悪さしてるかどうかぐらいは調べ上げてみます。 apacheでのログ apache + mod_perl での環境です。 こんな感じでエラーがでます。 #tail error_log [notice] child pid 26028 exit signal Segmentation fault (11
Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最
はじめに プログラムのデバッグと言えばひたすらprintfを挿入しまくっていたある日、 デバッガなる便利な代物があるということを知った。なんでもプログラムを一行 ずつ実行できて、変数の値をその場で確認できるらしい。これは是非使ってみねばと 思い、UNIX環境で使えるGDBというデバッガを試してみた。が、何がなんだかさっぱり 分からない。Webを検索するとマニュアルの日本語訳が見つかった。これで勉強すれば 使えるようになるかも、と読み始めるも、いきなりm4がどうのこうのだの、意味不明 の文章が続く…。 これは私がGDBを使い始めた時の話だが、似たような経験を持っている人が他にもいる と思う。 GDBのマニュアルは初心者にはすこし敷居が高い。 GDBに限らずマニュアルというものは初学者が参考書として用いるのには 適していない。というのも、マニュアルの類は情報量が多い分、重要な部分を 見つけ出す
先日のShibuya.pm #9のLightening Talkで「gdbでXS on mod_perlをデバッグ」という話をしてきました。XSを使い出すと、従来のPerl的デバッグだけでは不十分なのでgdbをうまく使って、効率的にデバッグしましょう、という話です。実は、はてな社内では1年近く前に勉強で話したネタだったのですが、ようやく公開することができました。 Shibuya.pmでは5分という枠があったのでショートver.でしたが、ここでは制限はないので、本来のロングバージョンの資料をアップします。ちょっと公開できない情報が混っていたので、xxxで隠していますが、ご了承ください。 ちなみに、Rubyとかでも似た感じでデバッグできると思うので、そちらの人も参考にしてください。長いよ!という人は、最後の「これは設定しておけ的gdb初期化マクロ」だけでもどうぞ。かなり便利です。 (資料公開が
gdb tips gdb を使う上で便利な tips を紹介します。基本的な使い方をマスターしている人向けです。 .gdbinit の設定 ホームディレクトリに .gdbinit を置いておくと、gdb の起動の際に読み込まれます。私の場合は次のような設定をしています。 set history save on set history size 10000 set history filename ~/.gdb_history set print pretty on set print static-members off set charset ASCII set history から始まる最初の 3行は履歴に関する設定です。それぞれ、 gdb のコマンドラインの履歴をファイルに保存する、保存する行は最大 10000 行、ファイル名は ~/.gdb_history 、という意味になります。
GDB の要約 「GNU 一般公有使用許諾書」の和訳文書と再配布について ** 和文文書についての注意 ** 和文文書自体の再配布に関して GNU 一般公有使用許諾書 はじめに GNU 一般公有使用許諾の下での複製、頒布、変更に関する条項と条件 付録: あなたの新しいプログラムにこれらの条項を適用する方� 訳者の序 GDB の入出力の慣例 GDB が扱うファイルの解説 引数によるファイルの指定 コマンドによるファイルの指定 デバッグのためのプログラムのコンパイル方� GDB の下でのプログラム実行方� あなたのプログラムに渡す引数 あなたのプログラムの環境 あなたのプログラムのワーキングディレクトリ あなたのプログラムへの入出力 既に起動しているプロセスのデバッギング チャイルドプロセスを kill するには 停止と継続 シグナル ブレークポイント ブレークポイントの設定方� ブレークポイ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く