libtrace를 사용하여이 코드를 작성했지만 세그먼트 오류가 발생했습니다. 나는 모든 코드를 명확히하기 위해 이곳에 둔다. 누구든지 문제가있는 곳에서 나를 도울 수 있습니다! 또한 코드가 사각형 계수의 일부 특수 패킷을 샘플링하려고한다고 언급해야합니다.libtrace로 C 코드의 Seg 오류가 발생했습니다.
int main(int argc,char **argv)
{
while(trace_read_packet(trace,packet)> 0){
if (filter && !trace_apply_filter(filter,packet))
continue;
if (packet->type < TRACE_RT_DATA_SIMPLE)
/* Ignore RT messages */
continue;
numpackets ++;
if (flag == true)
{
first =trace_get_seconds(packet);
flag = false;
}
sizes[i] = trace_get_capture_length(packet);
i++;
randnumber = (double)rand()/(double)RAND_MAX;
if(randnumber <= probability)
{
//trace_dump_packet(packet);
trace_write_packet(output, packet);
sampledpackets++;
}
next = trace_get_seconds(packet);
if (double_t(next - first)== blocktime)
{
scv = var(sizes, i);
scv = a_scv * scv + scv_error;
m = a_m * m + m_error;
n = 1 - (n/2);
probability = (ltqnorm(n)*e*scv)/m;
i =0;
flag = true;
}
}
printf("\n");
printf("number of packets is : %llu\n",numpackets);
printf("number of sampled packet: %llu\n",sampledpackets);
if (trace_is_err(trace)) {
trace_perror(trace, "trace_read_packet");
}
trace_destroy(trace);
trace_destroy_output(output);
}
return 0;
}
또한,이 내 기억의 출력은 다음과 같습니다 당신이 패킷을 읽고 쓸 수 있도록 사용하기 전에
7fff18b1b000-7fff18b3c000 rw-p 00000000 00:00 0 [stack]
7fff18bfe000-7fff18c00000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]
변수는 어디에 선언 되었습니까? 메인에 – kbshimmyo
하지만 여기에 넣지 않았습니다. – user3120628
'-Wall -g'로 컴파일하고 [Valgrind] (http://valgrind.org/docs/manual/quick-start.html)를 통해 실행 해보십시오. – kbshimmyo