목록Debug (5)
幸福伝説
GNU debugger 소개 David Seager CICS/390 Development, IBM Hursley 2001년 2월 Linux의 특징은 GNU 디버거(debugger) 또는 쉘의 gdb이다. gdb 사용으로 프로그램의 내부 구조 이해, 변수 값의 인쇄 및 소스 코드를 통한 정지점과 싱글 스텝을 설정할 수 있다. gdb는 프로그램 코드 상의 문제를 해결할 수 있는 강력한 무기이다. 이 글에서 gdb가 얼마나 멋지고 유용한지를 설명한다. 컴파일 하기 디버그하기 전에, 디버그 하고자 하는 프로그램에 디버깅 정보를 컴파일 한다. 그럼으로써 gdb가 사용했던 변수, 라인 및 함수를 실행할 수 있다. gcc(또는 g++)에서 '-g' 옵션을 이용하여 프로그램을 컴파일 한다. : gcc -g eg.c -..
core dump file이 발생하였을 경우 이것을 가지고 디버깅 하는 방법을 소개하고자 한다. 간단한 소스 코드를 보자. #include int main(int argc, char* argv[]) { char buffer[16]; buffer[80000] = 3; return; } gcc -g -o main main.c ps: -g 옵션은 디버그 정보를 넣어서 컴파일을 해 주는데, 이게 없으면 core 파일을 분석 할 수 없다. frank@tightrope:~/tmp/gdbtest$ ./main Segmentation fault core dump file이 생성되지 않을 경우는 막아 놓았기 때문인데, ulimit 를 사용해서 이것을 풀어줄 수 있다. ulimit -c 1024 (core file 용량을..
core dump 는 디버깅을 하는데 아주 유용한 자료이다. 만약 자신의 시스템에서 segementaion fault 등이 발생했는데도 core dump 가 안된다면 shell 에서 다음을 확인해 보라. # ulimit -a 이렇게 하면 사용자의 각종 제한 사항이 보여지는데 여기에 core file size 가 0 으로 되어 있다면 core dump 가 일어나지 않는다. 이를 해제하려면, # ulimit -c unlimited 위의 명령을 수행하면 된다.
OS에 제공되는 debugger는 여러 가지가 있으나 기본적으로 제공되는 것은 다음과 같다. - Solaris adb === $adb objectfile corefile $c === exit command : Ctrl-d - HP-UX dde === $dde -ui line core_file object_program_pathname dde>tb === exit command : quit adb === $adb objectfile corefile $c === exit command : Ctrl-d - AIX adb === $adb objectfile corefile $c === exit command : Ctrl-d dbx === $dbx objectfile corefile (dbx)where === e..
원문: http://kldp.org/node/71806 디버깅 작업 또는 프로그램의 안전성을 검사할 때 디버거를 잘 쓰면 꽤 많은 시간을 절약할 수 있습니다. 대부분 개발자들이 GDB를 써서 디버깅을 하고 있지만, GDB가 가지고 있는 강력한 기능들을 거의 쓰지 못하고 있기 때문에, 이 글에서는 자주 쓰이지는 않을 지언정, 알면 매우 도움이 되는 기능들을 위주로 살펴보겠습니다. 먼저, 이 글을 읽는 분들이 GDB의 기본적인 사용 방법 (특히 break, run, continue, file, backtrace, print 등)을 알고 있다고 가정하겠습니다. 기본적인 사용 방법을 모르신다면 Emacs/GDB/etags/cscope나 기타 GDB manual을 참고하기 바랍니다. Breakpoints brea..