BLOG main image
분류 전체보기 (368)
IT (67)
끄적거린수필 (147)
경제의이해 (13)
Wow! (43)
리뷰 (10)
사진과 그 순간 기억 (60)
인상깊은 구절 (21)
자료실 (4)
English (3)
엔컴퓨팅 무슨 회사냐 하시는 분..
Welcome to the NComputing World
10월 13일 무한도전 - 환장의 짝..
Nothing is impossable in this..
해커와 화가...
괴짜 프로그래머의 일상사~@@
재테크 열풍 속에서 우리는 무엇..
Miracler's Blog Life~
266,116 Visitors up to today!
Today 24 hit, Yesterday 39 hit
daisy rss
tistory 티스토리 가입하기!
2009/06/14 17:19

가끔, 환경이 커지게 되면, 기존의 동작하던 코드가 동작하지 않게 된다. 예를 들어서 굉장히 큰 데이터를 처리해야 한다든지, 한 프로그램을 동시에 여러 개를 돌린다든지 하면 정상적으로 동작하던 것이 동작하지 않게 된다. 이럴 때는 솔직히 너무 고생을 많이 하게 된다.  실제 기존 코드의 문제일 수도 있지만 우리가 흔히 믿고 쓰는 표준 라이브러리에서 오는 문제일 수도 있다. 이런 것을 하나 씩 다 따라가봐야 하지만, 아주 크고 복잡한 환경을 가정하고 있기 때문에 디버깅 하기도 굉장히 시간이 걸리고 어렵기도 하다.

이번에 경험한 것이 내가 짠 코드가 아니지만 트레이스의 크기가 2기가만 넘어서더라도 제대로 동작하지 않았다. 내가 추가적으로 변경한 부분에서 오는 것일 줄 알고 찾아봤지만 도저히 원인은 발견되지 않았고, 내가 변경한 코드 부분을 빼고 원래 그대로의 순수한 버전에서 돌려봐도 동일한 문제가 나왔다. 실제 에러 나오는 부분을 찾아서 찍어 보니깐 원인은 stdio.h에 있는 fopen에서 발생하는 것이었다. fopen에서는 Large한 파일을 처리할 수 없게 기본적으로 되어 있었다. 결국 원인 이것 때문이었고 stdio.h를 호출하기 전에

#define _FILE_OFFSET_BITS 64
#define _LARGEFILE_SOURCE

를 정의해주어서 문제를 해결하게 되었다.
Large, Complicated한 것은 Unsafe하기 쉽다는 것을 알게 되었다.
Trackback Address :: http://www.coveredjin.com/trackback/398 관련글 쓰기
Name
Password
Homepage
Secret