gdb에 대해 알고 싶어요

envy100의 이미지

어떤 글을 보니까 gdb를 사용해서 나왔던데 gdb가 뭔지 뭐에 쓰는 건지도 모르겠어요.
gdb에 관한 내용좀 알려주세요

choissi의 이미지

맹고이의 이미지

gdb로 디버깅을 하려면

gcc foo.c -g

이렇게 -g 옵션을 붙여야 프로그램을 디버깅할수 있다고 들었는데..

그냥 컴파일할때와 차이가 무엇인지요

-g 옵션을 안붙이면 디버깅이 안되는건가요?

Quote:

공유라이브러리가 만약 -format-frame-pointer 스위치를 가지고 컴파일되었다면 gdb를 사용할 수 없을 것이다. -g 옵션을 주는 이유는 바로 정적 링크를 행하라는 말을 함축하게 된다.

라는데.. -format-frame-pointer 는 무엇인지..
가르쳐주세요
dyaus의 이미지

맹고이 wrote:
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 정보가 없어서, 정보를 얻을 수 없습니다.

choissi의 이미지

이렇게 생성된 디버깅 정보를
strip를 사용면 날려 버릴수도 있답니다.. ^^

울랄라~ 호기심 천국~!!
http://www.ezdoum.com

eungkyu의 이미지

Quote:
공유라이브러리가 만약 -format-frame-pointer 스위치를 가지고 컴파일되었다면 gdb를 사용할 수 없을 것이다. -g 옵션을 주는 이유는 바로 정적 링크를 행하라는 말을 함축하게 된다.

이 말은 -g 옵션을 붙였을 경우 정적 링크를 할 것이라는 말인데, 그렇지 않습니다. -g를 붙여도 동적 링크 잘 합니다. 디버깅 정보만 더 넣을 뿐이지..

그리고, -format-frame-pointer가 아니고 -fomit-frame-pointer입니다. 단순 오타가 아닌거 같아서 :)

이 옵션을 붙이면, frame pointer를 레지스터에 따로 기록하지 말라는 것이 되는데, 이 옵션을 붙이면 gdb사용이 불가능하게 될 가능성이 높습니다. 별로 권장하는 옵션은 아닙니다..

고물의 이미지

gdb를 행하기 위해서는 -g 옵션이 필요합니다.

-g옵션을 주고 컴파일을 하게 되면..

일반 컴파일 할때보다 실행파일도 사이즈가 커지게 됩니다.

실행파일 사이즈가 커진다는 것은 gdb를 사용할때 필요한 정보를 실행파일에 같이 넣는 것 같습니다.

core는 kernel compile시에 옵션을 주게 되면 코어를 떨어뜨릴 수 있으며

코어도 사용하고 실행파일도 사용하고 해서 gdb를 사용할 수 있을 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <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].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.