[Windows] OSRM 실행하기 - OSRM backend 서버 실행

2024. 11. 27. 21:43프로그래밍/GIS

728x90

 

 

[Windows] OSRM 실행하기 - osrm-extract

▶ [실패] OSRM 실행하기 - 오류 해결Chat gpt 와 함께 OSRM 빌드해보기 - 디버그모드저번 글에서 릴리즈 모드로 빌드를 성공하기는 했으나, 실행 시 오류로 인해서 디버그 모드로 빌드를 진행하다실

tobee.tistory.com

저번 글에서 얼추 오류를 잡았다고 생각해서 다음과 같이 명령을 차례로 실행해서 경로 탐색 서버를 만들어 볼까 합니다.

osrm-extract.exe --with-osm-metadata -p C:\DEV\GIS\OSRM\osrm-backend\profiles\car.lua C:\DEV\GIS\OSRM\Backend_Exec\data\seoul-non-military.osm.pbf
osrm-contract.exe C:\DEV\GIS\OSRM\Backend_Exec\data\seoul-non-military
osrm-routed.exe C:\DEV\GIS\OSRM\Backend_Exec\data\seoul-non-military.osrm

결과도 뭐 깔끔하게 끝난 것 같고, 파일도 많이(?) 생성 되었습니다 하하...

 

탐색 서버 실행

그럼, 탐색 서버를 실행해 보겠습니다.

osrm-routed.exe C:\DEV\GIS\OSRM\Backend_Exec\data\seoul-non-military.osrm

결과는

디버깅 메시지를 보고 짐작하건데...프로그램이 진심으로 메모리가 없어서 메시지를 이렇게 뿌린게 아니겠다 싶네요....

[2024-11-27T11:46:44.167788] [warn] [exception] std::bad_alloc
[2024-11-27T11:46:44.167863] [warn] Please provide more memory or consider using a larger swapfile

 

VSCode 로 디버깅해보기

지루한 디버깅 시간이 왔습니다아~~

VSCode 를 열고 다음과 같이 lauch.json 파일을 만들어 주었습니다.

{
  "version": "0.2.0",
  "configurations": [

    {
      "name": "Debug Extract OSRM",
      "type": "cppdbg",
      "request": "launch",
      "program": "C:\\DEV\\GIS\\OSRM\\osrm-backend\\build\\osrm-extract.exe",  // 빌드된 실행 파일 경로
      "args": [
                "-p",
                "C:\\DEV\\GIS\\OSRM\\osrm-backend\\profiles\\car.lua",
                "C:\\DEV\\GIS\\OSRM\\Backend_Exec\\data\\seoul-non-military.osm.pbf"
            ],
      "stopAtEntry": false,
      "cwd": "C:\\DEV\\GIS\\OSRM\\osrm-backend",  // 작업 디렉토리 경로
      "environment": [],
      "externalConsole": true,  // 디버깅 시 콘솔을 별도로 열기
      "MIMode": "gdb",  // GDB 디버거 사용
      "setupCommands": [
          {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
          }
      ],
      "miDebuggerPath": "C:\\DEV\\SDK\\msys64\\clang64\\bin\\gdb.exe",  // MSYS2의 GDB 경로 설정
      //"preLaunchTask": "Make Build",  // 디버깅 전에 빌드 작업을 실행
      //"miDebuggerArgs": "run -p C:\\DEV\\SDK\\msys64\\home\\User\\osrm-backend\\profiles\\car.lua C:\\DEV\\GIS\\OSRM\\Backend_Exec\\data\\south-korea-latest.osm.pbf ",  // GDB 인수
      //"miDebuggerArgs": "--cd=${workspaceRoot}", 
      "logging": {
        "moduleLoad": false,
        "programOutput": true,
        "engineLogging": false
      }
    },
    {
      "name": "Debug Contract OSRM",
      "type": "cppdbg",
      "request": "launch",
      "program": "C:\\DEV\\GIS\\OSRM\\osrm-backend\\build\\osrm-contract.exe",  // 빌드된 실행 파일 경로
      "args": [
                "C:\\DEV\\GIS\\OSRM\\Backend_Exec\\data\\seoul-non-military"
            ],
      "stopAtEntry": false,
      "cwd": "C:\\DEV\\GIS\\OSRM\\osrm-backend",  // 작업 디렉토리 경로
      "environment": [],
      "externalConsole": true,  // 디버깅 시 콘솔을 별도로 열기
      "MIMode": "gdb",  // GDB 디버거 사용
      "setupCommands": [
          {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
          }
      ],
      "miDebuggerPath": "C:\\DEV\\SDK\\msys64\\clang64\\bin\\gdb.exe",  // MSYS2의 GDB 경로 설정
      //"preLaunchTask": "Make Build",  // 디버깅 전에 빌드 작업을 실행
      //"miDebuggerArgs": "run -p C:\\DEV\\SDK\\msys64\\home\\User\\osrm-backend\\profiles\\car.lua C:\\DEV\\GIS\\OSRM\\Backend_Exec\\data\\south-korea-latest.osm.pbf ",  // GDB 인수
      //"miDebuggerArgs": "--cd=${workspaceRoot}", 
      "logging": {
        "moduleLoad": false,
        "programOutput": true,
        "engineLogging": false
      }
    },
    {
      "name": "Debug Route OSRM",
      "type": "cppdbg",
      "request": "launch",
      "program": "C:\\DEV\\GIS\\OSRM\\osrm-backend\\build\\osrm-routed.exe",  // 빌드된 실행 파일 경로
      "args": [
                "C:\\DEV\\GIS\\OSRM\\Backend_Exec\\data\\seoul-non-military.osrm"
            ],
      "stopAtEntry": false,
      "cwd": "C:\\DEV\\GIS\\OSRM\\osrm-backend",  // 작업 디렉토리 경로
      "environment": [],
      "externalConsole": true,  // 디버깅 시 콘솔을 별도로 열기
      "MIMode": "gdb",  // GDB 디버거 사용
      "setupCommands": [
          {
              "description": "Enable pretty-printing for gdb",
              "text": "-enable-pretty-printing",
              "ignoreFailures": true
          }
      ],
      "miDebuggerPath": "C:\\DEV\\SDK\\msys64\\clang64\\bin\\gdb.exe",  // MSYS2의 GDB 경로 설정
      //"preLaunchTask": "Make Build",  // 디버깅 전에 빌드 작업을 실행
      //"miDebuggerArgs": "run -p C:\\DEV\\SDK\\msys64\\home\\User\\osrm-backend\\profiles\\car.lua C:\\DEV\\GIS\\OSRM\\Backend_Exec\\data\\south-korea-latest.osm.pbf ",  // GDB 인수
      //"miDebuggerArgs": "--cd=${workspaceRoot}", 
      "logging": {
        "moduleLoad": false,
        "programOutput": true,
        "engineLogging": false
      }
    }
  ]
}

 

Debug Route OSRM을 선택해 주면 되겠죠.

뭐... 역시나, 파일을 읽어 들일 때 헤더 초기화가 안되었던 부분이 있어서 그랬던 것 같습니다.

tar.hpp
0.01MB

 

 

드디어 일단 경로서버를 실행하는 데 성공 했습니다.

 

이상.

728x90