Simple
Sand
Samples
プログラミング言語サンプル集
TOPへ
Hello World!(各言語のTOP)
awk AWKコマンド
banner 花文字(バナー)
basename パスからファイル名抽出
cal カレンダー表示
cat ファイルの連結、内容表示
cd ディレクトリ変更
cksum CRCチェックサム
cp ファイルコピー
cut テキスト列抽出
date 日付と時間
dd バイナリ生成
diff ファイル比較
dirname パスからディレクトリ名取得
expand タブスペース変換
ed エディタ
find ファイル検索
gdb GNUデバッガ
git バージョン管理
global ソースコードTAGGING
grep 文字列検索
hd バイナリ16進ダンプ
head テキスト先頭抽出
hexdump バイナリダンプ
join フィールド一致行結合
ld リンクコマンド
ln シンボリックリンク
ls ファイルリスト
lv 文字コード変換
md5sum MD5メッセージダイジェスト
mkdir ディレクトリ作成
mv ファイル名(ディレクトリ)変更
netdiscover コンピュータ検索
nl 番号付け
od バイナリダンプ
paste ファイルを横に並べて表示
patch パッチを当てる
perl Perlコマンド
pr ページ付け、段組
printf 書式付き表示
pushd,popd ディレクトリ変更復帰
pwd カレントディレクトリ表示
rename ファイル名を一括変更
rev テキスト左右反転
rmdir 空のディレクトリ削除
scp リモートファイルコピー
sed ストリームエディタ
seq 数列生成
sort ソート
split ファイル分割
sleep 指定時間遅延
sum チェックサム
svn バージョン管理
tac テキスト上下反転
tail テキスト末尾抽出
tar 書庫操作、圧縮、解凍
touch タイムスタンプ更新
tr 文字一括置換
unexpand スペースタブ変換
uniq ソート済テキストの重複削除
vim vimエディタ
wc 単語数行数カウント
xargs 引数作成
zip,unzip ZIP圧縮解凍

説明のないとってもシンプルなサンプルプログラム集
COBOL awk C言語 D言語 GO言語 Lua Vim
bash Perl Gauche Clojure CLISP EmacsLisp VimScript
tcsh Ruby Groovy Java C# VBScript JavaScript
Io言語 Python Erlang Scala VB.NET Excel/VBA PHP
Tcl Haskell OCaml PowerShell Windows Unix/Linux

Linuxコマンド > gdb GNUデバッガ

1
2
3
4
5
gdb [-help] [-nx] [-q] [-batch] [-cd=dir] [-f] [-b bps]
       [-tty=dev] [-s symfile] [-e prog] [-se prog] [-c core]
       [-x cmds] [-d dir] [prog [core|procID]]
gdb [options] --args prog [arguments]
gdbtui [options]

実行/終了
r[un] [引数] プログラム実行(初回)
q[uit] gdbの終了
n[ext] [回数] ステップ実行(関数内に入らない)
s[tep] [回数] ステップ実行(関数内に入る)
c[ontinue] [回数] プログラム実行(2回目以降)
ブレイク
b[reak] [ファイル]行番号 ブレイクポイント設定
b[reak] [ファイル]関数名 ブレイクポイント設定
b[reak] [場所] if 条件 条件ブレイク設定
i[nfo] b[reakpoints] 全ブレイクポイント表示
dis[able] 番号 ブレイクポイント無効化
en[able] 番号 ブレイクポイント有効化
d[elete] 番号 ブレイクポイント削除
d[elete] 全ブレイクポイント削除
変数表示
p[rint] 変数 変数値表示
p[rint]/x 変数 16進数表示
p[rint]/o 変数 8進数表示
disp[lay] 変数 変数値自動表示
disp[lay]/x 変数 16進数表定
disp[lay]/o 変数 8進数表示
d[elete] d[isplay] 番号 自動表示削除
ソース表示
l[ist] ファイル:行番号 ソース表示
l[ist] [ファイル:]関数名 関数表示
スタック
backtrace コールスタック表示

main.c(サンプルCソース)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "sub.h"
int main(int argc, char* argv[])
{
int x,y,z;
if(argc == 3){
x = atoi(argv[1]);
y = atoi(argv[2]);
z = power(x, y);
}
return 0;
}

sub.h(サンプルCソース)
1
int power(int x, int y);

sub.c(サンプルCソース)
1
2
3
4
5
6
7
8
9
10
11
#include "sub.h"
int power(int x, int y)
{
y --;
if(y == 0){
return x;
}else{
power(x*x, y);
}
}

GDBでデバッグするために-gオプションでコンパイルする

$ gcc -g main.c sub.c

GDB起動

gdb a.out
GNU gdb (GDB) 7.4.1-debian
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /sample/a.out...done.
(gdb) 

ブレイクポイント設定

(gdb) b main
Breakpoint 1 at 0x8048455: file main.c, line 7.
(gdb) 

プログラムを実行する

(gdb) r
Starting program: /sample/a.out 

Breakpoint 1, main (argc=1, argv=0xbffffa84) at main.c:8
8               if(argc == 3){ 
(gdb) 

引数を指定して実行する

(gdb) run 2 10
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /sample/a.out 2 10

Breakpoint 1, main (argc=3, argv=0xbffffa74) at main.c:8
8               if(argc == 3){ 
(gdb) 

ファイル名、関数名でブレイクポイント設定

(gdb) b sub.c:power
Breakpoint 1 at 0x80484be: file sub.c, line 5.
(gdb) 

ファイル名、行番号でブレイクポイント設定

(gdb) b sub.c:6
Breakpoint 2 at 0x80484c2: file sub.c, line 6.
(gdb) 

ブレイクポイント表示

(gdb) i b
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08048455 in main at main.c:8
        breakpoint already hit 1 time
2       breakpoint     keep y   0x080484be in power at sub.c:5
3       breakpoint     keep y   0x080484c2 in power at sub.c:6
(gdb) 

#:

ブレイクポイント無効化

(gdb) dis 1
(gdb) info b
Num     Type           Disp Enb Address    What
1       breakpoint     keep n   0x08048455 in main at main.c:8
        breakpoint already hit 1 time
2       breakpoint     keep y   0x080484be in power at sub.c:5
3       breakpoint     keep y   0x080484c2 in power at sub.c:6
(gdb) 
#:

ブレイクポイント有効化

(gdb) en 1
(gdb) info b
Num     Type           Disp Enb Address    What
1       breakpoint     keep y   0x08048455 in main at main.c:8
        breakpoint already hit 1 time
2       breakpoint     keep y   0x080484be in power at sub.c:5
3       breakpoint     keep y   0x080484c2 in power at sub.c:6
(gdb) 
#:

ブレイクポイントを削除する

(gdb) del 1
(gdb) info b
Num     Type           Disp Enb Address    What
2       breakpoint     keep y   0x080484be in power at sub.c:5
3       breakpoint     keep y   0x080484c2 in power at sub.c:6
(gdb) 

すべてのブレイクポイントを削除する

(gdb) d
Delete all breakpoints? (y or n) y
(gdb) i b
No breakpoints or watchpoints.
(gdb) 

条件ブレイク設定

(gdb) break power if x==2
Breakpoint 4 at 0x80484be: file sub.c, line 5.
(gdb) i b
Num     Type           Disp Enb Address    What
4       breakpoint     keep y   0x080484be in power at sub.c:5
        stop only if x==2
(gdb) run 2 10
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /sample/a.out 2 10


ソースを表示する

(gdb) l sub.c:power
1       #include "sub.h"
2       
3       int power(int x, int y)
4       {
5               y --;
6               if(y==0){
7                       return x;
8               }else{
9                       power(x*x , y);
10              }
(gdb) 

GDBを終了する

(gdb) q
$