리눅스에서는 실행이 되고 맥에서는 실행이 안되서 물어봅니다.
글쓴이: thinga3 / 작성시간: 금, 2012/12/21 - 6:56오후
리눅스에서 make를 하고 실행을 하면 정상적으로 되는데
맥(Lion)에서는 make를 해서 정상적으로 만들어지는데 실행을 하면 segmentation fault: 11이 뜹니다.
왜 그런지 알고 싶습니다.
실행방법은 첨부된 파일을 압축을 풀고
그 폴더안의 dspect -- limseed를 컴파일을 하고
다시 dspect 폴더에서 컴파일을 한 후
2012.08.16폴더에서 readme에 쓰인대로 하시면 됩니다.
File attachments:
첨부 | 파일 크기 |
---|---|
Field.tar | 3.42 MB |
Forums:
이렇게 해보세요
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
마침 제 맥이 라이언이어서 해 봤습니다. 말씀대로
마침 제 맥이 라이언이어서 해 봤습니다.
말씀대로 seg. fault가 발생하더군요.
디버그용으로 빌드해서 gdb로 돌려 보았더니, 다음의 메시지가 나오네요.
"Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x00000001000ec000
0x0000000100000f45 in spgram (mst=0x100100c20) at spgram.c:104"
아마도 shint 님 말쓰대로 spect 배열의 영역을 넘어가는 게 이유 같은데요,
소스가 다 있으니, gdb로 쫓아 가면서 왜 그렇게 되었는 지를 확인해 보시면 시간이 좀 걸리더라도 원인은 찾으실 수 있을 겁니다.
자세한 gdb 실행 결과 첨부합니다.
Current directory is ~/Downloads/Field/dspect/
GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Thu Nov 3 21:59:02 UTC 2011)
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries .. done
(gdb) set args ../2012.12.21/mseed/JNUA1.00.2012.356.ELE 30 15 0.01 10 50 8 ../pz/les.pz > JNUA1.00.ELE.dat
(gdb) r
Starting program: /Users/philnet/Downloads/Field/dspect/dspectro ../2012.12.21/mseed/JNUA1.00.2012.356.ELE 30 15 0.01 10 50 8 ../pz\
/les.pz > JNUA1.00.ELE.dat
Reading symbols for shared libraries +........................ done
dt: 0.005000, npts: 1487447, lf: 0.010000, hf: 10.000000
dt: 0.005000, N: 262144, df: 0.000763
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x00000001000ec000
0x0000000100000f45 in spgram (mst=0x100100c20) at spgram.c:104
(gdb)
-uuu:**-F1 *gud-dspectro* All L20 (Debugger:run [signal])---------------------------------------------------------------------
if( i == 0 )
{
df = 1./(dt*N);
resp = get_inst_resp(stype,rtype,1./(dt*N),gain,cnst,N/2+1,pzfile);
for(j=1;j<=N/2;j++) resp[j-1] *= resp[j-1];
fprintf(stderr,"dt: %lf, N: %d, df: %lf\n",dt,N,df);
}
for(j=1,freq=df;j<=N/2;j++,freq+=df)
{
=> spect[j] /= resp[j-1]/freq/freq/4/M_PI/M_PI; // differentiation
// spect[j] *= pow(2.*M_PI*freq,2.);
}
smooth(spect+1,N/2,5);
// if( debug ) fprintf(stderr,"%10d, N:%d\n",i/20,N);
outfreq = lf;
logfreq = log10(lf);
outlogdf = log10(hf/lf)/outdf;
sum = 0.;
-uu-:---F1 spgram.c 61% L104 (C/l Abbrev)----------------------------------------------------------------------------------
댓글 달기