리눅스에서 fortran 환경...

macsaint의 이미지

일이 역학문제를 푸는 시뮬레이션쪽이라서 항상 포트란을
씁니다.
그동안 제가 구입한 포트란만 해도 absoft 포트란
visual 포트란등 여러개 되는 군요..
상용 포트란은 대부분 윈도우즈용이라 대부분 다 윈도우즈용만
구입했네요..

최근에 인텔에서 나온 리눅스용 포트란을 쓰고 있는데
디버깅환경이 idb밖에 없어서 아쉽더군요..

여기저기 찾아보니 emacs에서 idb mode를 사용하면
그냥 콘솔에서 쓰는 것 보다는 편해집니다.
그래도 뭔가 아쉬움이 남는 군요.

최근에 gdb-ui라고 윈도우즈에서의 환경과 비슷한 모드가
emacs용으로 나오긴 했는데 intel fortran은
호환이 안되는군요. ㅠ.ㅠ

제 환경은:
compiler - intel fortran
debugger - idb (intel debugger)
interface - emacs (idb mode)
data visualization - matlab

디버깅환경에 대한 개개인의 노하우를 공개해주시면
여러사람들에게 도움이 되겠죠??

mycluster의 이미지

저는 오로지 print 문을 사용합니다... ^^

--------------------------------
윈도위의 리눅스 윈도위의 윈도우 리눅스위의 익스플로러

k2hyun의 이미지

MyCluster wrote:
저는 오로지 print 문을 사용합니다... ^^

저는 가끔 fflush(stdout); 도 같이 써줍니다.. :twisted:

더 이상 없다.

yuni의 이미지

그냥 gdb와 이멕스로 잘 되던데요. 엑스이멕스를 gdb 모드에서 사용을 하시면 최소한 브레이크, 컨티뉴, 등등의 몇개는 버튼으로 지원이 됩니다. 인텔 포트란에서 컴파일 된 것이 gdb에서 지원하더군요. 너무 당연한 것인가요.

idb는 안 써 보았는데. gdb보다 장정이 있던가요? 갑자기 구미가 당기는 군요. :D

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

macsaint의 이미지

yuni wrote:
그냥 gdb와 이멕스로 잘 되던데요. 엑스이멕스를 gdb 모드에서 사용을 하시면 최소한 브레이크, 컨티뉴, 등등의 몇개는 버튼으로 지원이 됩니다. 인텔 포트란에서 컴파일 된 것이 gdb에서 지원하더군요. 너무 당연한 것인가요.

idb는 안 써 보았는데. gdb보다 장정이 있던가요? 갑자기 구미가 당기는 군요. :D

앗... 저는 intel fortran으로 컴파일 한 것은 그냥 gdb로만해서
print 명령으로 array 변수에 저장된 값을 출력하면
그냥 빈것으로만 나오던걸요??
참 저는 xemacs말고 emacs를 씁니다..

아무튼.. emacs에서 M-x idb 그리고 idb -gdb 실행파일
을 치면 idb로도 gdb 스타일 사용이 가능합니다.
setnu 모드가 또한 많이 도움이 되더군요. 일일이 줄수를
세지 않아도 되니까요..

오늘 하루의 의미를 생각해 보자

yuni의 이미지

그렇군요. 그냥 gdb를 쓰는 것 보다는 idb가 더 좋군요. 저는 지금까지는 파라미터로 잡아서 시작하는 행렬의 값은 볼 수 없는 줄 알고 프린트문으로 해결을 했었거든요.

setnu 모드는 어떻게 실행하는것인가요? 메트릭스의 줄수를 세는 압박을 피하고 싶습니다.

GDB 퀵 레퍼런스카드가 제가 아는 전부인지라.... :oops:
이것은 다 알고 계신다고생각됩니다.

==========================
부양가족은 많은데, 시절은 왜 이리 꿀꿀할까요?
=====================
"지금하는 일을 꼭 완수하자."

익명 사용자의 이미지

yuni wrote:
그렇군요. 그냥 gdb를 쓰는 것 보다는 idb가 더 좋군요. 저는 지금까지는 파라미터로 잡아서 시작하는 행렬의 값은 볼 수 없는 줄 알고 프린트문으로 해결을 했었거든요.

setnu 모드는 어떻게 실행하는것인가요? 메트릭스의 줄수를 세는 압박을 피하고 싶습니다.

GDB 퀵 레퍼런스카드가 제가 아는 전부인지라.... :oops:
이것은 다 알고 계신다고생각됩니다.

setnu.el 이라는 script가 있습니다.
google에서 쉽게 찾으실 수 있을겁니다.
설치한후 alt-x setnu라고 치면 옆에 라인번호가 쭉 매겨집니다.

agalipa의 이미지

지금부터 하는 얘기는 일반적인 경우가 아니고 제가 사용하는 경우 입니다.
오해 없으시길 바랍니다.

Kdeveloper는 windows developer studio 와 비슷 하게 되어 있어서 사용하기 편리합니다.
그런데 이는 fortran 77 만을 지원하기 때문에 fortran 90 이상 에서는 compile 시 error가 발생하게 됩니다.
그래서 필요한 작업이 makefile 수정입니다.
makefile 에서 GNU 에서 컴파일 명령인 g77 대신 ifort로 바꾸고 ifort 명령을 항상 인식할수 있도록 (source opt/intel/....../ifortvars.sh)을 하나 하나 컴파일 될때 항상 읽을 수 있도록 해준다면 쉽게 사용할 수 있습니다.
역학의 수치적 계산을 요하는 작업을 하신다면 디버그 모드는 그다지 사용 안하실거라 판단됩니다.
write 와 print 를 사용해서 직접 matrix 로 write 해서 확인 해야 하는 경우가 태반이니..

agalipa의 이미지

그래서 전 fortran 200개의 파일들을 C(gcc),C++(g++)와 같이 Mixed programming 하고 있습니다.
사용시 문제는 최초 makefile 을 만들어야 하기 때문에 처음 한번은 compile 해야되는데 이때 에러가 겁나게 많아서 중단 시키는데 몇십분 걸리더군요.
(요게 힘든작업입니다)