전체 글 (12) 썸네일형 리스트형 [c++, ns3] what(): vector::M_range_check: __n (which is 0) >= this->size() 에러 해결 진짜 자주보는 에러인데 바보같이 매번 찾는데 오래 걸린다 벡터 원소 접근할 때 .at(~)에서 해당 자리에 데이터 없으면 생기는 에러로.. 벡터를 코드에서 많이 쓰다보니 이 에러도 자주 본다ㅎ 심지어 어디서 벡터 썼었는지 기억도 잘안남 나는 그럴땐 grep 이용해서 우선 가능성 있는 곳들 찾은다음 확인해본다 이번에도 push-back 처음 하기 전에 값을 불러와서 생긴 에러였다. vector에서 []로 원소 접근하지 않고 .at으로 할 땐 반드시 데이터를 미리 해당 위치에 넣어두고 사용하기!!!!! [ns3] extern 변수 선언의 편리성과 그에 따른 고민 실험하다보면 정말 매우 많은 파일의 함수 참조가 이뤄진다. ns3 기본 제공 모듈만 사용한 간단한 실험을 진행할 때에는 새로운 application이나 기타 기능을 생성할 필요가 없이 main내에서 적당히 파라미터를 바꾸면 되는데, 이번 실험은 규모가 크다보니 조정해야 할 파라미터가 매우 많았다. 또한 다양한 파일에서 동시적으로 접근해야하는 공용 데이터가 많았다. - 기지국의 커버리지, node 별 stop and restart time을 랜덤하게 변경, 서버의 커버리지, handover 관련 파라미터 등등등 처음에는 각 파일에서 파라미터들을 변수로 사용하지 않고 (레전드 바보짓) 대충 임의의 값을 가지고 작성했지만 이러다보니 나중에 진짜 조작변인들을 변경해가며 실험해야할 때, 커버리지가 옵션에 따라 자.. [ns3] SIGSEGV 에러 해결 (segmentation fault) 실험하면서 진짜 자주보는 에러... 아직도 초보인가봐 ㅎ 원인은 당연히 메모리 접근을 잘못한건데, 문제는 큰 실험을 돌리다보니 어디서 이게 뜬건지조차 찾는게 오래 걸린다. 내 경험적 통계상 많은 원인은 map이나 vector 사용할 때이다. 나중에 다시 이 에러를 만났을때를 위해 정리해둔다..^^ case 1) map이나 vector에서 []사용해서 인덱스로 값 참조하는 경우보단 .at을 사용하는게 안전한데, 문제는 at의 경우 반드시 해당 자리에 값이 존재하는 경우에만 사용가능하다. 따라서 사용 전 자동 생성이나 초기화 과정이 반드시 필요하다. case 2) c++보다 ns3에서 발생하는 조금 더 구체적인 상황이다. 나는 시뮬레이션에서 node를 구분하는 기준으로 node Id를 사용한다. (node별.. [Ubuntu 20.04] badvalue (integer parameter out of range for operation) 에러 해결 netgenerate으로 네트워크를 생성하고 netedit에서 내가 만든 파일을 선택하면 터미널에서 아래와 같은 에러와 함께 core dumped error로 꺼지는 현상이었다. badvalue (integer parameter out of range for operation) 처음에는 netedit이나 sumo의 문제라 생각했지만 찾아보니 nvidia graphic driver 문제인 것 같았다. 아래처럼 기존 설치된 권장 그래픽 드라이버를 지우고, 다시 설치한 다음 reboot하니 잘 동작되었다. 첫번째 문장으로 내 pc에 적합한 driver를 찾은 다음 (recommended 등의 표시되어있음) 해당 드라이버를 지운 뒤, 다시 설치하고 reboot하기 $ sudo ubuntu-drivers devi.. SUMO에서 netgenerate를 이용해 자동 네트워크 생성하기 ns3로 실험을 하다보면 grid 네트워크와 이동하는 노드 trace file을 자주 생성하고 사용하는데, netedit에서 원하는 모양을 만들수는 있지만 하나씩 만들기는 너무 오래걸린다. netgenerate 기능을 사용하면 터미널에 몇 줄 입력만하면 자동으로 네트워크가 생성되어서 매우 매우 편리하다! 나는 grid net만 만들어봤지만, 스파이더 등 다양한 토폴로지가 가능하다. 아래 방식을 따라가면 4x4 (간격은 300m)의 grid map이 생성된다! 이외에도 netgenerate --help를 터미널에 입력하면 매우 다양한 옵션으로 커스터마이즈 가능하다. 1. Grid network 자동 생성하기 netgenerate --grid --grid.number 5 --grid.length 300 --.. [ns3] undefined reference to 에러 해결 이 에러는 c++ 사용하는 사람들이 자주 마주하는 에러라 비교적 해결책이 많이보인다. 일반적으로 1. 헤더파일에 선언하고 .cpp에 구현하지 않은 경우 2. 작은 오타 (대소문자, 함수 이름 등등...) 때문이라고 하는데, 나는 두가지 경우가 모두 아니었다. .cc파일과 .h 파일에 함수를 모두 추가해두긴 했는데, .cc파일에서 함수를 define을 할 때에 아래와 같이 UdpClient::를 꼭 작성해야 하는데, 나는 그걸 빼먹었었다. double UdpClient::functionName (Ptr node) { ... ... } 아래처럼 작성했던 것이다..ㅋㅋㅋ 혹시 undefined reference to 문제를 겪는데 오타도 없고 cc파일에서도 잘 define했다면 이 문제일 수 있으니 확인해보기.. [ns3, C++] 'MyApp' was not declared in this scope 문제 해결 - 헤더파일 include에 문제가 없음에도 에러가 뜬 경우 (IFNDEF) 실험을 위해 ns3에서 새로운 application를 개발하고있다. 개발하다보니 여러개 app이 필요했는데, udp-client, udp-server app을 비롯한 관련 cpp파일과 header파일을 거의 복사해서 myapp 개발에 사용하고있다. 첫번째 myapp은 개발 후 테스트하니 성공적으로 서버와 클라이언트 간의 Tx, Rx가 모두 되었는데 똑같이 복사해서 만든 두번째 myapp2도 함께 install해서 테스트하니 실패했다. 분명 새로만든 helper, model 헤더를 소스파일에 잘 추가했고, wscript파일 등에도 모두 추가했는데.. 새로 만든 MyApp이 declare되지 않았다고 떴다,, 여기까지가 문제 배경이고 원인과 해결법은 아래와 같았다. 원인: udp-client-server-h.. [Ubuntu] NVIDIA graphic driver 문제로 resolution이 갑자기 변경 불가한 문제 우분투 설치한 pc는 되도록이면 off를 안하려고한다... 그래서 퇴근할때도 켜고 가는데 교내 전체 정전이 되면서 출근하니까 강제 power off되어있었다. 다시 켜보니 문제는 없었으나 해상도가 640*480으로 설정되어있었고 다른 resolution option이 아예 보이지 않아서 수정도 불가했다. 찾아보니 NVIDIA 그래픽 드라이버 문제라해서 이것저것 해보았지만 잘안되어서 고생하다가 stack exchange에서 해결법을 찾았고, 해보았더니 원래대로 돌아와서! 공유해둔다. 아래 명령어 순서대로 실행하니 잘 되었다. (nvidia driver version은 무조건 470을 할게 아니라, ubuntu-drivers devices 명령어로 recommended version 확인한 뒤 알맞게 설치할.. 이전 1 2 다음