gdb.Command.__init__ (self, "test_events", gdb.COMMAND_STACK)
ひたすら Vim でコードリーディングに疲れてきたので CGDB を導入. Homebrew にあったのですぐできた. $ brew install cgdb Warning: It appears you have MacPorts or Fink installed. Software installed with other package managers causes known problems for Homebrew. If a formula fails to build, uninstall MacPorts/Fink and try again. ==> Downloading http://downloads.sourceforge.net/project/cgdb/cgdb/cgdb-0.6.5/cgdb-0.6.5.tar.gz ################
このエントリは、Google が Google Code でオープンソースとして公開しているソフトウェアの解説シリーズの第2回です。 今回は、Google CoreDumper というソフトウェアを紹介します。 このソフトウェアはアプリケーションプログラムから任意のタイミングでコアダンプを出力する機能を提供するライブラリです。 「 コアダンプ 」 はプロセスのある時点での状態を保存したファイルで、デバッグのときなどに利用されます。通常、プログラムが異常終了したときや特定のシグナルを受信したときに OS カーネルがコアダンプファイルを出力し、そのプロセスは終了します。開発者はそのダンプファイルを gdb などのデバッガなどで解析して問題の原因を調査します。 問題が発生してコアダンプが生成される場合以外にも動作中のプロセスのスナップショットをコアダンプファイルとして生成できれば、その時点でのプ
The document discusses product architecture and its role in manufacturing firms. It defines product architecture as the scheme by which the function of a product is allocated to physical components. Product architecture impacts a firm's ability to achieve strategic goals like innovating new products, responding to market changes, and lowering production costs. The author argues that understanding
この本の「#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
『ハイパフォーマンスJavaScript』を読んだ。ハイパフォーマンスJavaScript作者: Nicholas C. Zakas,水野貴明出版社/メーカー: オライリージャパン発売日: 2011/03/20メディア: 大型本購入: 4人 クリック: 500回この商品を含むブログ (16件) を見る全体として非常に良い本だと思ったのだが、9.3章の「JavaScriptファイルの前処理」の章だけで他の全てを圧倒するようなインパクトがあった。曰く、 #ifdef DEBUG console.log("debug!"); #endif のようなC/C++のプリプロセッサを使ったJavaScriptを書いて、 % cpp -P -C -DDEBUG script.js console.log("debug!!!"); のように"-P -C"オプションを使ってcppの前処理をかけてやると便利だよ
[This post is by Patrick Dubroy, an Android engineer who writes about programming, usability, and interaction on his personal blog. — Tim Bray] The Dalvik runtime may be garbage-collected, but that doesn't mean you can ignore memory management. You should be especially mindful of memory usage on mobile devices, where memory is more constrained. In this article, we're going to take a look at some o
先日twitterで「C++でデバッグする時、よくやるよね」って言ったら結構知らない人がいたのでここでも紹介してみる。 既存のコードでcout/cerrを使ったデバッグ文がわんさかあって、これログファイルとして出力したいな...って場合ありますよね。 そんな場合 #include <iostream> #include <fstream> using namespace std; int main() { // こんなの ofstream ofs("debug.log"); cout.rdbuf(ofs.rdbuf()); // いれとく cout << "debug string" << endl; } こうしておくと、その後のcoutへの出力が全てdebug.logというファイルへ出力される。 なおrdbufを元に戻すには #include <iostream> #include <f
javascript, twitterFirebug が導入した console.log() は最近のブラウザで標準的に実装されつつあります。しかし、万が一、リリースコードに console.log が混じり込んでしまうと、古いブラウザや開発ツールが導入されていないブラウザで JavaScript エラーになってしまってとても悲しくなります。ということで、そういう場合にエラーを出さないようにするために、お手製の偽者 console オブジェクトを実装するテクニックがあります。ちょっと検索するといろいろ見つかります。 if (!window.console){ window.console = { log: function(){} }; } 確かに小さなプロジェクトでは、こういうおまじないを書いておくと安心だろうなー…と思っていたら、twitter のソースコードに次のようなコードを発見。
2011.12.02追記 最新版で動作するようエントリを修正しました。 node.jsのデバッグ(ステップ実行)ができるnode-inspectorの使い方 - 大人になったら肺呼吸 はじめに このエントリでは、Ubuntu 10.10上にnode-inspectorとnode.jsをインストールし、node.jsをデバッグ(ステップ実行)する手順について書いています。このエントリを書くにあたり、以下のエントリを参考にさせていただきました。 node.jsでのデバッグ方法 - すにぺっと node.jsの開発時に役立つモジュール : アシアルブログ node-inspectorは、サーバサイドのJavaScriptをブラウザ上(Webkit系のブラウザ)でデバッグできるようにしてくれるライブラリです。 node-inspectorってのがあって、これがあると chrome上(webkit系
JavaScript, Node.jsどうも、成人式に行けなかったのがちょっとショックですけど、まあ地元の子に連絡してみたら結構元気そうだったので満足です。というわけで、ebiflyです。エビフライですよ、エビフライ、おいしいですよね。https://github.com/yaakaito/ebifly簡単にいうとiPhone(じゃくともいいけど)のWebから ebifly.log("いえーい"); とかしてログを母艦のコンソールに送ったり、コンソールからiPhoneにJSを送りつけて実行するあれです。たまに似たようなというかほとんど同じものを見ますけど、なんかちょっとださいのでかっこよさにはすこーしだけ力を入れてみました!なんで作ったかNode.jsの味をしめたからですね。それだけです。あとこういうのあると楽じゃないですか。UIWebViewとかconsole.log("aaa")じゃみ
プログラムが機能を果たせない場合には、有用なエラーメッセージを返し、問題を解決する手がかりを提供するのが理想的だ。しかし残念ながら、このような理想的な状況は珍しく、アプリケーションでエラーが発生したときに、手元に何の情報もないことも多い。 ここで、デバッグツールの登場だ。私にとってなくてはならないツールの1つが、straceだ。straceはシステムコールトレーサで、すでに実行されているプログラムによって発せられたコールを追跡する(straceを既存のPIDにバインドする)ことも、テストしたいプロセスをstraceに開始させることもできる。 では、straceの使い方を実例とともに見ていくことにしよう。 KDE起動時の問題 以前、私はKDEを起動する際の問題をデバッグしていた。返されたエラーメッセージからは、何の手がかりも得ることができなかった。 _KDE_IceTransSocketCr
クリスマスも近いですね。さて、クリスマスといえばどういうわけか黒魔術への需要が一気に高まる時期のようですので、Java Advent Calendar -ja 2010の12月20日はJavaの黒魔術をお送りします。昨日はid:celitanでした。 今日紹介する黒魔術はバイトコードインジェクションツールであるBytemanです。 この前ですね、お仕事で「HTTPレスポンスのヘッダが勝手に想定外のものに書き換わる」という不思議現象の相談を受けたんですね。Servletの中ではsetHeader("Foo", "bar")ってしてるのに、実際のレスポンスは"Foo: hoge"とか返ってる。アプリのJavaソース調べてもそんなことしてなさそうだし、Tomcatのソース見てもsetHeader()呼び出しでは何のログも出さないっぽいのでログを有効にしても原因がわからなさそう。なんだこれはとか思
2011-2-28 NSLogの出力を分りやすくするを修正しました。 新型MacBookAirをケーキ入刀用に買おうとしてるみなさんこんにちは。ダニーです。 iPhoneアプリ開発をしてるとメモリ周りで落ちることがあってデバッグするのが大変ですね, 今回はデバッグについて紹介したいと思います。 CGRectの中身を表示する CGRect rect = CGRectMake(13, 30, 100, 200); NSLog(@"%f %f %f %f", rect.origin.x, rect.origin.y, rect.size.width, rect.size.height); NSStringFromCGRectを使うと簡潔になります。 CGRect rect = CGRectMake(13, 30, 100, 200); NSLog(@"%@", NSStringFromCGRec
Emacs Lispのデバッグをしているとき、特定の関数呼び出しをトレースしたいことがあります。 関数呼び出しのトレースとは、呼び出した関数の引数の値と、返り値をチェックすることです。 もちろん、関数が呼び出されたかどうかもわかります。 トレースの実現にはadvice機能を使っています。 M-x trace-functionでトレースするM-x trace-functionは、特定の関数をトレースします。 このコマンドは、トレース対象関数と出力バッファを聞いてきます。 出力バッファはデフォルトで*trace-output*なので、そのままにしておくのが無難です。 複数の関数をトレースする際に出力がごちゃごちゃになるのが嫌ならば別のバッファ名にしておけばいいです。 その後でトレース対象関数を呼び出したら、トレース結果を表示します。 M-x trace-function-backgroundで
「実行ファイルの解析ってどーやるのっ!」 「解析やってみたいよー」 「どこの学科に行けば勉強できるの?!」 などのような質問をよく受けるので、ひとつの個人的な道筋を書いてみます。 とりあえず今回は実行ファイル解析編。アセンブリ楽しいよアセンブリ。 (最後の方には実行ファイルに限らず、いろいろな解析系のリンクをまとめています。) 最初の入門 なんだかんだで一番分かりやすくて「解析してる!」っていう実感が沸きやすそうなのは、crackmeかなあと思うのです。 解析魔法少女美咲ちゃん マジカル・オープン! この本は実にいやらしいすばらしい・・・入門の入門と言えようぞ・・・((( 実際問題とても分かりやすく、「16進数って何?」というレベルの人でも頑張れば問題ない構成だと思います。途中までは。 とりあえず半分ぐらいまで熟読してみると、第一歩を踏み出す準備ができるのではないでしょうか。 むしろ、2歩
はじめに 今回は、UML+GDBでBtrfsをデバッグできるようにしてみる。途中で失敗して多少遠回りになったけれども、デバッグはできるようになった。なお、Ubuntu 10.10でのUMLの開発環境がまだ整備できていないので、これまで使ってきたUbuntu 8.04のUMLの環境を使うことにした。 準備 Btrfsは、カーネルビルド時にmake defconfigしただけだと、デフォルトでは組み込まれない。そこで、make menuconfigからBtrfsを組み込むようにする。File systems -> Btrfs filesystem (EXPERIMENTAL) Unstable disk format を選択する。Mだとカーネルモジュールになって面倒なので、*を選択し、カーネルに完全に組み込んでしまうことにした。 これで、ビルドしたlinuxにbtrfs_*な関数にブレークポイ
はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く