'디버깅'에 해당되는 글 2건

  1. 2010/02/07 nVidia Nexus Beta 되었다고 왔네요
  2. 2008/02/16 getchar() 함수의 다른 쓰임새
2010/02/07 00:54
크리에이티브 커먼즈 라이선스
Creative Commons License
CUDA 를 사용한 병렬 프로그래밍을 하면 제일 더러운 것이 디버깅 입니다.
사실 CUDA 뿐 아니라 모든 병렬 프로그래밍이 제일 변태같은게 디버깅이죠 -_-;;

어쨌든 nVidia 에서 Visual Studio 2008 에 내장되는 형태로 Nexus 라는 디버거를 내놓았습니다.

http://www.nvidia.com/object/cuda_get.html 에 보시면 하단부분에
NVIDIA’s “Nexus” (code name) for Visual Studio now in Beta: Sign up today!
라는 부분에 Sign up 을 하면, 약간의 심사(?)를 거친 후에 이메일로 결과가 옵니다.

저는 한 2주정도 걸린것 같은데요

1. Two (2) computers running Windows Vista or Windows 7 on the same network, one to host Visual Studio, and a target for running your application.

2. One (1) G92 or GT200 based GeForce, Quadro or Tesla GPU in the target machine.


현재는 G92 나 GT200 아키텍쳐를 사용한 nVidia 칩셋을 지원 하는군요.
흑... 저는 G98M 아키텍쳐라 다른 PC 로 해봐야 되네요

아래의 동영상은 Nexus 를 사용해 디버깅을 하는 모습입니다.

Video #1: Parallel Nsight debugging CUDA C in Visual Studio 2008
Debugging CUDA C, Memory and Variable Inspection, Thread Focus


저작자 표시 비영리 동일 조건 변경 허락
Posted by SHHyun
2008/02/16 21:45
크리에이티브 커먼즈 라이선스
Creative Commons License
일반적으로 getchar() 함수는 하나의 문자 입력을 받을 때 쓰는 함수입니다.

콘솔상태에서 알고리즘 프로그래밍을 하다보면
데이터 입력을 받을때 주로 쓰는 함수가
scanf, getchar 등이 있겠는데요.

오늘 제가 말씀드리고자 하는건 getchar() 함수의 다른 용도 입니다.

디버그에 이용하는 것 입니다.

어떻게 이용하느냐...

예를들면 이런 것 입니다.

엄청나게 복잡한 프로그램이 수행되고 있는데 갑자기 중간에 오류가 생기는거죠
여기서 VS 디버거를 이용하면 그만 아니냐... 라고 말하신다면 그냥 묵념하겠습니다
네.. 여기서 말씀드리고자 하는건
VS 디버거를 편리하게 사용할 수 없는 경우 입니다.
Webot 이나 다른 프로그램에 연동되는 것을 이용할 때
간혹 디버거를 이용할 수 없는 경우가 있습니다.
리눅스에서도 GDB나 이런 디버거를 이용하기 어려운 경우를 이야기 합니다.

이럴때
getchar() 함수와 printf 나 puts 등의 함수를 세트로 곳곳에 배치하는 것
입니다.

이렇게 되면 현재 프로그램의 진행상황을 살펴볼 수 있으니
편리하게 오류를 잡아낼 수 있는 것이죠.
puts 나 printf 로 모든 프로그램의 진행상황을 다 추적해보는 것도 하나의 방법입니다만,
어떤 콘솔 프로그램은 오류가 나는 즉시 중단되어 버리기도 하기 때문에
getchar 함수를 디버그에 이용하면 편리합니다.

많은 분들이 이미 이렇게 쓰시는 분도 계시는지 모르겠지만...
모르시는 분들도 혹시 있을까해서 한번 적어보았습니다.
Posted by SHHyun