thread debugging 관련 하여..

air74의 이미지

안녕하세요 .

기본적으로 thread 는 gdb 로 분석이 안 되나요?

프로그램 A 에서 쓰레드 B 생성 할 경우 B 의 함수 디버깅을 하려면 gdb 로는 불가능 한가요?

그리고 pthread_mutex_init 은 반드시 해주어야 하는 것인가요? 저거 안 해줘도 pthread_mutex_lock 이니 그런거는 가능 한거 같은데..?

그럼 수고 하세요.

saxboy의 이미지

thread B에 있는 함수에 breakpoint를 걸어주시면 됩니다.

하지만, gdb내에서 작동하는 스레드의 스케줄링과 실제로 작동하는 스레드 스케줄링의 보통 다르기 때문에 미묘한 문제를 디버깅하면서는 도움이 되지 않는 경우가 많더군요.
제 경우에는 첫번째 스레드에는 탭없이 printf(), 두번째 스레드에는 탭을 하나 넣고 printf... 와 같은 방법으로 로그를 남겨서 디버깅하는 방법을 자주 사용합니다. 여러 스레드가 작동하는 순서를 한눈에 볼 수 있어서 유용한 경우가 많더군요.

익명 사용자의 이미지

아..스레드마다 탭을 넣으면 보기 쉽겠당
유용한 팁감사

맹고이의 이미지

saxboy wrote:
thread B에 있는 함수에 breakpoint를 걸어주시면 됩니다.

하지만, gdb내에서 작동하는 스레드의 스케줄링과 실제로 작동하는 스레드 스케줄링의 보통 다르기 때문에 미묘한 문제를 디버깅하면서는 도움이 되지 않는 경우가 많더군요.
제 경우에는 첫번째 스레드에는 탭없이 printf(), 두번째 스레드에는 탭을 하나 넣고 printf... 와 같은 방법으로 로그를 남겨서 디버깅하는 방법을 자주 사용합니다. 여러 스레드가 작동하는 순서를 한눈에 볼 수 있어서 유용한 경우가 많더군요.

하드보일드형이시군요. :o

litdream의 이미지

어~~~ 제가 잘 몰라서 그런데, 하드 보일드형이 뭐죠?

삽질의 대마왕...

yielding의 이미지

Quote:
제 경우에는 첫번째 스레드에는 탭없이 printf(), 두번째 스레드에는 탭을 하나 넣고 printf... 와 같은 방법으로 로그를 남겨서 디버깅하는 방법을 자주 사용합니다. 여러 스레드가 작동하는 순서를 한눈에 볼 수 있어서 유용한 경우가 많더군요.

멋진 방법입니다

Life rushes on, we are distracted

galien의 이미지

탐정유형에 따른 디버깅 패턴입니다.

:lol:

crimsoncream의 이미지

gdb를 쓰신다면 쓰레드내의 함수나 line에 breakpoint를 거시고 command 명령을 사용해 보시죠. 소스에 변형을 가하거나 디버깅 명령 입력동안 쓰레드가 홀딩되서 생기는 문제에 신경쓰지 않으면서 디버깅 메시지 출력이나 변수를 다루는 정도의 작업은 어렵지 않게 하실 수 있을 겁니다.

오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.