gdb でソースを解析する
1. coredumpを有効化
ulimit -c unlimited
2. レジスタの表示
(gdb) info reg
3. 特定のレジスタを表示する
(gdb) p $eax
4. x 特定のメモリの中身を表示する
(gdb) x $pc //通常表示
(gdb) x/i $pc //機械命令として
(gdb) x/10i $pc //pcから10個の機械命令として
5. x86プロセッサの場合、PCはeipレジスタで、FPはebpレジスタです。
6. (gdb) frame でframe情報を表示し、
(gdb) frame number でframe を切り替える。
2010年3月7日日曜日
2010年2月18日木曜日
emacs & svn
下記プラグインを利用する。
psvn.el
こいつを~/.emacs-dirに保存し
~/.emacsを編修する
###################
(setq load-path
(append
(list (expand-file-name "~/.emacs-dir/")) load-path))
(require 'psvn)
###################
使い方についてpsvn.elを開いて参照してください。
psvn.el
こいつを~/.emacs-dirに保存し
~/.emacsを編修する
###################
(setq load-path
(append
(list (expand-file-name "~/.emacs-dir/")) load-path))
(require 'psvn)
###################
使い方についてpsvn.elを開いて参照してください。
2010年2月7日日曜日
Ubuntu でパッケージのソースコードを入手する
元ネタ:
http://masaoo.blogspot.com/2009/07/ubuntu.html
あるコマンドのソースコードを調べてみたいとか、見てみたいということがあります。
そんなときは apt-get で簡単にソースコードを取ってくることができます。
以下は dig コマンドのソースを取ってくる場合の例。
1. which コマンドで dig コマンドの保存場所を調べます。
# which dig
/usr/bin/dig
2. dpkg コマンドで dig コマンドが含まれるパッケージを調べます。
# dpkg -S /usr/bin/dig
dnsutils: /usr/bin/dig
3. dnsutils のソースコードを apt-get で取得します。
# mkdir dig
# cd dig
# apt-get source dnsutils
4. ls で見るとこんな感じになります。
あとは bind9-9.4.2.dfsg.P2 ディレクトリ内を調べます。
他のコマンドでも同様のやり方でいけます。
# ls
bind9-9.4.2.dfsg.P2 bind9_9.4.2.dfsg.P2-2ubuntu0.1.dsc
bind9_9.4.2.dfsg.P2-2ubuntu0.1.diff.gz bind9_9.4.2.dfsg.P2.orig.tar.gz
投稿者 まさお 時刻: 19:40
ラベル: Ubuntu
http://masaoo.blogspot.com/2009/07/ubuntu.html
あるコマンドのソースコードを調べてみたいとか、見てみたいということがあります。
そんなときは apt-get で簡単にソースコードを取ってくることができます。
以下は dig コマンドのソースを取ってくる場合の例。
1. which コマンドで dig コマンドの保存場所を調べます。
# which dig
/usr/bin/dig
2. dpkg コマンドで dig コマンドが含まれるパッケージを調べます。
# dpkg -S /usr/bin/dig
dnsutils: /usr/bin/dig
3. dnsutils のソースコードを apt-get で取得します。
# mkdir dig
# cd dig
# apt-get source dnsutils
4. ls で見るとこんな感じになります。
あとは bind9-9.4.2.dfsg.P2 ディレクトリ内を調べます。
他のコマンドでも同様のやり方でいけます。
# ls
bind9-9.4.2.dfsg.P2 bind9_9.4.2.dfsg.P2-2ubuntu0.1.dsc
bind9_9.4.2.dfsg.P2-2ubuntu0.1.diff.gz bind9_9.4.2.dfsg.P2.orig.tar.gz
投稿者 まさお 時刻: 19:40
ラベル: Ubuntu
2010年1月23日土曜日
2010年1月17日日曜日
C言語defineテクニック
以下定義の理由
#define DUMP_WRITE(addr,nr) do { memcpy(bufp,addr,nr); bufp += nr; } while(0)
if (addr)
DUMP_WRITE(addr,nr);
else
do_something_else();
(unsigned long)(&((type *)0)->member))
構造体のメンバーmemberのシフト量
#define DUMP_WRITE(addr,nr) do { memcpy(bufp,addr,nr); bufp += nr; } while(0)
if (addr)
DUMP_WRITE(addr,nr);
else
do_something_else();
(unsigned long)(&((type *)0)->member))
構造体のメンバーmemberのシフト量
2009年11月5日木曜日
Dependency Walker
Dependency Walker(ディペンデンシーウォーカー)は、32ビット/64ビット(exe、dll、ocx、sysなど)のWindowsモジュールをスキャンするユーティリティです。全ての依存モジュールの階層的ツリーダイアグラムを表示します。
2009年10月26日月曜日
gdbでテストを行う
1.gdbで入力したコマンドを下記で記録できる
(gdb) set history filename test-pattern1
(gdb) set history save on
2.記録したファイルを下記コマンドで起動できる
> gdb a.out -x test-pattern1
3.詳しくは下記を参考に
http://www.fireproject.jp/feature/gdb/advanced/auto-test.html
(gdb) set history filename test-pattern1
(gdb) set history save on
2.記録したファイルを下記コマンドで起動できる
> gdb a.out -x test-pattern1
3.詳しくは下記を参考に
http://www.fireproject.jp/feature/gdb/advanced/auto-test.html
登録:
投稿 (Atom)