Skip to content
Snippets Groups Projects
Commit ddb7fcc6 authored by 이소현's avatar 이소현
Browse files

Update README.md

parent 5725a4ff
No related branches found
No related tags found
No related merge requests found
......@@ -468,3 +468,37 @@ int main()
fprintf(stdout, "%f : %d %d\n, fa, (int)fa, (int)(fa*powf(2.0f,16)));
}
```
## lesson09
* c 언어에서 ^ 는 XOR을 나타낸다.
1. $gcc -g : debug하는 명령어 (gdb -GNU Debugger 이용)
> * 디버깅 : 버그를 잡는다는 뜻
> * 디버깅을 하고 $file a.out 을 하면 with debug_info 라는 것이 같이 출력된다.
2. 버그 생성 후 디버깅 해보기
> 1. fscanf 에서 정수를 입력받을 때 &number 형태로 정수의 주소를 받아야 하는데 그냥 number로 받아 버그를 생성했다.
>> * 그랬더니 실행파일 생성 과정에서 segmentation fault(core dumped) 가 발생했다.
> 2. gdb 사용법
>> * $gdb a.out : gdb interface 안에 들어가기
>> * (gdb) run : 실행 -> 에러가 어디서 났는지 알 수 있다. (위의 예의 경우 scanf에서 났음)
>> * (gdb) where : call stack 현재 내가 어디 있다는 것을 알려준다.
>> * (gdb) list main : main 소스코드를 보여주어 에러코드 찾아 볼 수 있음
>> * (gdb) list : 전체코드를 부분씩 보여줌
>> * (gdb) break 34 : 34번째 line에서 스톱
>>>> run 하면 위의 것 작동
>> * (gdb) next : 지금하는 소스코드의 바로 다음(한줄)실행
>> * (gdb) step : 함수속으로 들어 가서 다음 코드를 실행 하고 싶을 때 사용 (ex)fscanf의 소스코드로 들어가서 다음 줄
>> * (gdb) continue : 계속 다 실행
>> * (gdb) print i : 현재 i 값 프린팅
>> * (gdb) delete breakpoint : break point 모두 지우기
>> * (gdb) clear 34 : 34번에 걸린 브레이크 포인트만 지우기(특정 브레이크 포인트 찝어서 지우기)
>> * (gdb) start : 처음부터 다시 시작
>> * (gdb) bt : call stack을 보여준다.
>> * (gdb) info break : break 한것들을 볼 수 있다.
>> * (gdb) sisable br 4 : 잠깐 동안만 4번의 브레이크를 머추게 한다.
>> * (gdb) watch : 변수가 변경 될 때 프로그램을 중단하기 위해 변수에 감시점을 설정한다. 프로그램 실행 중에 변수가 어떻게 변경되는지 자동으로 인쇄할려면 디스플레이를 사용하면 된다. watch 사용시 변수의 값이 바뀔 때 마다 실행을 중지할 수 있다.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment