diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 62e2c563c2e17dc5122eca114f85529af3593c30..542363a79cef452d518ad80da5b88f9c28b9d1f4 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -169,6 +169,32 @@ windows:build:
       - cmake -DCMAKE_GENERATOR_PLATFORM=x64 "-DFTL_VERSION=$CI_COMMIT_TAG" -DWITH_GNUTLS=TRUE -DGNUTLS_INCLUDE_DIR="C:/Build/bin/gnutls/lib/includes/" -DGNUTLS_LIBRARY="C:/Build/bin/gnutls/lib/libgnutls.dll.a" ..
       - '& MSBuild.exe beyond-protocol.sln -property:Configuration=Release -nr:false -maxCpuCount'
 
+windows:build_debug:
+  only:
+    - tags
+
+  stage: build
+  tags:
+    - windows
+
+  needs: []
+  dependencies: []
+
+  cache: # use artifacts instead if multiple runners available
+    key: $CI_COMMIT_SHORT_SHA
+    paths:
+      - build_debug/
+
+  script:
+      - Import-Module "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/Common7/Tools/Microsoft.VisualStudio.DevShell.dll"
+      - Enter-VsDevShell -VsInstallPath "C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/"
+      - cd $CI_PROJECT_DIR
+      - if (Test-Path build) { Remove-Item build_debug/ -Recurse }
+      - mkdir build_debug
+      - cd build_debug
+      - cmake -DCMAKE_GENERATOR_PLATFORM=x64 "-DFTL_VERSION=$CI_COMMIT_TAG" -DWITH_GNUTLS=TRUE -DGNUTLS_INCLUDE_DIR="C:/Build/bin/gnutls/lib/includes/" -DGNUTLS_LIBRARY="C:/Build/bin/gnutls/lib/libgnutls.dll.a" ..
+      - '& MSBuild.exe beyond-protocol.sln -property:Configuration=RelWithDebInfo -nr:false -maxCpuCount'
+
 windows:test:
   only:
     - main
@@ -224,6 +250,34 @@ windows:pack:
       - ./*.zip
     expire_in: 1 week
 
+windows:pack_debug:
+  only:
+    - tags
+  
+  stage: pack
+
+  tags:
+    - windows
+  dependencies: ["windows:build_debug"]
+  needs: ["windows:test", "windows:build_debug"]
+
+  cache: # use artifacts instead if multiple runners available
+    key: $CI_COMMIT_SHORT_SHA
+    paths:
+      - build_debug/
+
+  script:
+    - $env:PATH+=";C:/Shared/Deploy"
+    - cd build_debug
+    - cpack
+    - Invoke-RestMethod -Headers @{ "JOB-TOKEN"="$CI_JOB_TOKEN" } -InFile "../libftl-protocol-${CI_COMMIT_TAG}-win64.zip" -uri "${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/libftl-protocol/${CI_COMMIT_TAG}/libftl-protocol-${CI_COMMIT_TAG}-win64-debug.zip" -Method put
+
+  artifacts:
+    when: always
+    paths:
+      - ./*.zip
+    expire_in: 1 week
+
 # Documentation
 
 pages:
@@ -263,4 +317,6 @@ release_job:
           - name: 'DEB Package x86-64'
             url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/libftl-protocol/${CI_COMMIT_TAG}/libftl-protocol${CI_COMMIT_TAG}-Linux.deb'
           - name: 'Win64 Binary (ZIP)'
-            url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/libftl-protocol/${CI_COMMIT_TAG}/libftl-protocol-${CI_COMMIT_TAG}-win64.zip'
\ No newline at end of file
+            url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/libftl-protocol/${CI_COMMIT_TAG}/libftl-protocol-${CI_COMMIT_TAG}-win64.zip'
+          - name: 'Win64 Debug Binary (ZIP)'
+            url: '${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/libftl-protocol/${CI_COMMIT_TAG}/libftl-protocol-${CI_COMMIT_TAG}-win64-debug.zip'
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 431945a231701167cbda82e5fd0b154b1152faf5..12c759a85a38fb029459d35f2a3174b66bcf4e0b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -108,6 +108,7 @@ if (WIN32) # TODO(nick) Should do based upon compiler (VS)
 	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:AVX2 /MP /std:c++17 /wd4996 /Zc:__cplusplus")
 	set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DFTL_DEBUG /Wall")
 	set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /O2 /W3")
+    set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /O2 /W3 /Z7")
 	set(OS_LIBS "")
 else()
 	add_definitions(-DUNIX)