어떤 글을 보니까 gdb를 사용해서 나왔던데 gdb가 뭔지 뭐에 쓰는 건지도 모르겠어요. gdb에 관한 내용좀 알려주세요
http://www.ezdoum.com/search.php?query=gdb
울랄라~ 호기심 천국~!!http://www.ezdoum.com
gdb로 디버깅을 하려면
gcc foo.c -g
이렇게 -g 옵션을 붙여야 프로그램을 디버깅할수 있다고 들었는데..
그냥 컴파일할때와 차이가 무엇인지요
-g 옵션을 안붙이면 디버깅이 안되는건가요?
공유라이브러리가 만약 -format-frame-pointer 스위치를 가지고 컴파일되었다면 gdb를 사용할 수 없을 것이다. -g 옵션을 주는 이유는 바로 정적 링크를 행하라는 말을 함축하게 된다.
gdb로 디버깅을 하려면 gcc foo.c -g 이렇게 -g 옵션을 붙여야 프로그램을 디버깅할수 있다고 들었는데.. 그냥 컴파일할때와 차이가 무엇인지요 -g 옵션을 안붙이면 디버깅이 안되는건가요? Quote: 공유라이브러리가 만약 -format-frame-pointer 스위치를 가지고 컴파일되었다면 gdb를 사용할 수 없을 것이다. -g 옵션을 주는 이유는 바로 정적 링크를 행하라는 말을 함축하게 된다. 라는데.. -format-frame-pointer 는 무엇인지.. 가르쳐주세요
gdb가 아니라 gcc option에 해당하는 얘기가 되는것 같은데. -g flag가 있으면, debugging 정보를 같이 컴파일 합니다. 추가적인 것으로는 gdb에서 사용할 것이라는 -ggdb 라는 것도 있습니다.
어떤 문제가 생겼을때, 그것이 어떤 부분에서 생긴것인지 하는 code symbol table 정보가 없어서, 정보를 얻을 수 없습니다.
이렇게 생성된 디버깅 정보를 strip를 사용면 날려 버릴수도 있답니다.. ^^
그리고, -format-frame-pointer가 아니고 -fomit-frame-pointer입니다. 단순 오타가 아닌거 같아서 :)
이 옵션을 붙이면, frame pointer를 레지스터에 따로 기록하지 말라는 것이 되는데, 이 옵션을 붙이면 gdb사용이 불가능하게 될 가능성이 높습니다. 별로 권장하는 옵션은 아닙니다..
gdb를 행하기 위해서는 -g 옵션이 필요합니다.
-g옵션을 주고 컴파일을 하게 되면..
일반 컴파일 할때보다 실행파일도 사이즈가 커지게 됩니다.
실행파일 사이즈가 커진다는 것은 gdb를 사용할때 필요한 정보를 실행파일에 같이 넣는 것 같습니다.
core는 kernel compile시에 옵션을 주게 되면 코어를 떨어뜨릴 수 있으며
코어도 사용하고 실행파일도 사용하고 해서 gdb를 사용할 수 있을 것입니다.
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
링크 참조
http://www.ezdoum.com/search.php?query=gdb
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
디버깅할때..
gdb로 디버깅을 하려면
gcc foo.c -g
이렇게 -g 옵션을 붙여야 프로그램을 디버깅할수 있다고 들었는데..
그냥 컴파일할때와 차이가 무엇인지요
-g 옵션을 안붙이면 디버깅이 안되는건가요?
라는데.. -format-frame-pointer 는 무엇인지..
가르쳐주세요
Re: 디버깅할때..
gdb가 아니라 gcc option에 해당하는 얘기가 되는것 같은데.
-g flag가 있으면, debugging 정보를 같이 컴파일 합니다.
추가적인 것으로는 gdb에서 사용할 것이라는 -ggdb 라는 것도 있습니다.
어떤 문제가 생겼을때, 그것이 어떤 부분에서 생긴것인지 하는 code symbol table 정보가 없어서, 정보를 얻을 수 없습니다.
덧붙이자면..
이렇게 생성된 디버깅 정보를
strip를 사용면 날려 버릴수도 있답니다.. ^^
울랄라~ 호기심 천국~!!
http://www.ezdoum.com
Re: 디버깅할때..
이 말은 -g 옵션을 붙였을 경우 정적 링크를 할 것이라는 말인데, 그렇지 않습니다. -g를 붙여도 동적 링크 잘 합니다. 디버깅 정보만 더 넣을 뿐이지..
그리고, -format-frame-pointer가 아니고 -fomit-frame-pointer입니다. 단순 오타가 아닌거 같아서 :)
이 옵션을 붙이면, frame pointer를 레지스터에 따로 기록하지 말라는 것이 되는데, 이 옵션을 붙이면 gdb사용이 불가능하게 될 가능성이 높습니다. 별로 권장하는 옵션은 아닙니다..
gdb라..
gdb를 행하기 위해서는 -g 옵션이 필요합니다.
-g옵션을 주고 컴파일을 하게 되면..
일반 컴파일 할때보다 실행파일도 사이즈가 커지게 됩니다.
실행파일 사이즈가 커진다는 것은 gdb를 사용할때 필요한 정보를 실행파일에 같이 넣는 것 같습니다.
core는 kernel compile시에 옵션을 주게 되면 코어를 떨어뜨릴 수 있으며
코어도 사용하고 실행파일도 사용하고 해서 gdb를 사용할 수 있을 것입니다.
댓글 달기