- 1. ソース			
 
- 2. Makefile			
 
- 3. デバッグしてみる	
 
 
1. ソース
/home/hogehoge/lang/cpp/ncurses/ncurses.c
 
 というソースを作成して、以下のように記述しました。
#include <limits.h>
#include <locale.h>
#include <ncurses.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
	char *term;
	int cols, lines;
	WINDOW *win;
	setlocale(LC_ALL, "ja_JP.UTF-8");
	term = getenv("TERM");
	if (setenv("TERM", "vt100", true) != 0)
	{
	        printf("\n端末の設定に失敗しました。\n\n");
	        return 0;
	}
	initscr();
	win = newwin(LINES, COLS, 0, 0);
	keypad(win, 4);
	noecho();
	nodelay(win, true);
	halfdelay(10);
	while(true)
	{
		bool bbreak = false;
		char  atime[LINE_MAX] = {};
		struct tm stm = {};
		int y = LINES / 2;
		int x = COLS / 4;
		localtime_r(NULL, &stm);
		asctime_r(&stm, atime);
		werase(win);
		mvwprintw(win, y-1, x, atime);
		mvwprintw(win, y++, x, "何かキーを入力してください ");
		mvwprintw(win, y++, x, "終了するには e を入力します ");
		wrefresh(win);
		int n = wgetch(win);
		switch (n)
		{
		case 'e':
		case 'E':
			bbreak = true;
			break;
		default:
			break;
		}
		if (bbreak != false)
		{
			break;
		}
	}
	werase(win);
	wrefresh(win);
	delwin(win);
	endwin();
	setenv("TERM", term, true);
	return 0;
}
 
2. Makefile
  「Makefile」は、以下のように作成しました。
CC	= clang
target	: ncurses.o Makefile
	$(CC) -O0 -g -o ncurses ncurses.o -lncursesw
.c.o	: Makefile
	$(CC) -O0 -g -c $< -o $@
 
 とりあえず、最適化なし、デバッグシンボルを作成ってことです。
3. デバッグしてみる
 実行すると
$ ./ncurses
セグメントエラー(coreを出力しました)
 
 てなことになっちゃうのでデバッグしてみるのです。	追而書
 
 |