하지만, gdb내에서 작동하는 스레드의 스케줄링과 실제로 작동하는 스레드 스케줄링의 보통 다르기 때문에 미묘한 문제를 디버깅하면서는 도움이 되지 않는 경우가 많더군요.
제 경우에는 첫번째 스레드에는 탭없이 printf(), 두번째 스레드에는 탭을 하나 넣고 printf... 와 같은 방법으로 로그를 남겨서 디버깅하는 방법을 자주 사용합니다. 여러 스레드가 작동하는 순서를 한눈에 볼 수 있어서 유용한 경우가 많더군요.
하지만, gdb내에서 작동하는 스레드의 스케줄링과 실제로 작동하는 스레드 스케줄링의 보통 다르기 때문에 미묘한 문제를 디버깅하면서는 도움이 되지 않는 경우가 많더군요.
제 경우에는 첫번째 스레드에는 탭없이 printf(), 두번째 스레드에는 탭을 하나 넣고 printf... 와 같은 방법으로 로그를 남겨서 디버깅하는 방법을 자주 사용합니다. 여러 스레드가 작동하는 순서를 한눈에 볼 수 있어서 유용한 경우가 많더군요.
gdb를 쓰신다면 쓰레드내의 함수나 line에 breakpoint를 거시고 command 명령을 사용해 보시죠. 소스에 변형을 가하거나 디버깅 명령 입력동안 쓰레드가 홀딩되서 생기는 문제에 신경쓰지 않으면서 디버깅 메시지 출력이나 변수를 다루는 정도의 작업은 어렵지 않게 하실 수 있을 겁니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
thread B에 있는 함수에 breakpoint를 걸어주시면 됩니다.
thread B에 있는 함수에 breakpoint를 걸어주시면 됩니다.
하지만, gdb내에서 작동하는 스레드의 스케줄링과 실제로 작동하는 스레드 스케줄링의 보통 다르기 때문에 미묘한 문제를 디버깅하면서는 도움이 되지 않는 경우가 많더군요.
제 경우에는 첫번째 스레드에는 탭없이 printf(), 두번째 스레드에는 탭을 하나 넣고 printf... 와 같은 방법으로 로그를 남겨서 디버깅하는 방법을 자주 사용합니다. 여러 스레드가 작동하는 순서를 한눈에 볼 수 있어서 유용한 경우가 많더군요.
아..스레드마다 탭을 넣으면 보기 쉽겠당유용한 팁감사
아..스레드마다 탭을 넣으면 보기 쉽겠당
유용한 팁감사
[quote="saxboy"]thread B에 있는 함수에 breakpo
하드보일드형이시군요. :o
어~~~ 제가 잘 몰라서 그런데, 하드 보일드형이 뭐죠?
어~~~ 제가 잘 몰라서 그런데, 하드 보일드형이 뭐죠?
삽질의 대마왕...
[quote] 제 경우에는 첫번째 스레드에는 탭없이 printf(), 두
멋진 방법입니다
Life rushes on, we are distracted
탐정유형에 따른 디버깅 패턴입니다. :lol:
탐정유형에 따른 디버깅 패턴입니다.
:lol:
gdb를 쓰신다면 쓰레드내의 함수나 line에 breakpoint를 거시
gdb를 쓰신다면 쓰레드내의 함수나 line에 breakpoint를 거시고 command 명령을 사용해 보시죠. 소스에 변형을 가하거나 디버깅 명령 입력동안 쓰레드가 홀딩되서 생기는 문제에 신경쓰지 않으면서 디버깅 메시지 출력이나 변수를 다루는 정도의 작업은 어렵지 않게 하실 수 있을 겁니다.
오늘 우리는 동지를 땅에 묻었습니다. 그러나 땅은 이제 우리들의 것입니다.
아직도 우리의 적은 강합니다. 그러나 우리는 그들보다 많습니다.
항상 많을 것입니다.
댓글 달기