VS2017 won't debug in 64 bit mode with CMake

-1

I'm having trouble with getting Visual Studio to debug a CMake project I'm working on. I can build the application no problem, and if I run it normally in a separate command line it will run without errors, but trying to run it with the VS debugger produces the following error:

Exception thrown: 0xC0000005: Access violation reading location 0x0000000000000000.

Obviously this is a platform mismatch issue, and the debugger seems to only load symbols from 32 bit sources which supports that idea. I've found a few threads that address this issue in VS projects where you can set the debugger platform explicitly, but not equivalent for cmake. Does anyone know how to explicitly set the debugger platform for cmake projects please?

The project uses a lot of code that is auto-generated from another software package called Pitch Developer Studio, so I'm finding it a little difficult to figure out if it's that code causing issues or mine, and means the project is quite complex from the get go.

The top level CMake file:

cmake_minimum_required(VERSION 3.1.0)

set(CMAKE_CXX_STANDARD 98)

#Command line options and variables
   

#Use -DPDS_BUILD64BIT=ON/OFF
#Force linking of 32/64 bit RTIDriver libraries.
#If not set, PDS_BUILD64BIT will be set dependending on the operating system that Developer Studio os running on.
option(PDS_BUILD64BIT "Use 64 bit RTIDriver libraries" "ON")
    
#Use -DPDS_USE_PRECOMPILED_HEADERS=ON/OFF
option(PDS_USE_PRECOMPILED_HEADERS "Use precompiled headers" "ON")

#Use -DPDS_ALTERNATE_OUTPUT_NAME=<alternate output name>
#Libraries will be named lib<PDS_ALTERNATE_OUTPUT_NAME>.so/dll/dylib
set(PDS_ALTERNATE_OUTPUT_NAME "MENtOR_Base_Federate" CACHE STRING "Alternate output name for generated artifacts")

#-------------------------------------------------------------
project(MENtOR_Base_Federate)

if(NOT ${PDS_ALTERNATE_OUTPUT_NAME} STREQUAL MENtOR_Base_Federate)
   message(STATUS "Developer Studio: Using alternate output name: " ${PDS_ALTERNATE_OUTPUT_NAME})
endif()

#Always link with dynamic libraries on Windows
add_definitions(-DBOOST_ALL_DYN_LINK)

#Precompiled headers
if(PDS_USE_PRECOMPILED_HEADERS)
   add_definitions(-DDEVELOPER_STUDIO_USE_PRECOMPILED_HEADERS)
   set (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
   include(cotire)
   message(STATUS "Developer Studio: Using precompiled headers")
else()
   message(STATUS "Developer Studio: Disabling precompiled headers, builds may take longer time")
endif()

#Set output directories
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/build)

set(DEVSTUDIO_LIBDIR "${CMAKE_SOURCE_DIR}/lib/x64")
link_directories(${DEVSTUDIO_LIBDIR})

add_subdirectory("${CMAKE_SOURCE_DIR}/cmake/lib")
add_subdirectory("${CMAKE_SOURCE_DIR}/cmake/out")

The 'out' directory CMake file that actually creates the executable:

# Source files for MENtOR Federate
aux_source_directory(${CMAKE_SOURCE_DIR} SOURCE_FILES_1)
aux_source_directory(${CMAKE_SOURCE_DIR}/src SOURCE_FILES_2)
aux_source_directory(${CMAKE_SOURCE_DIR}/src/Utility SOURCE_FILES_3)
set(ALL_SOURCES ${SOURCE_FILES_1} ${SOURCE_FILES_2} ${SOURCE_FILES_3})

# Build binary
if(PDS_BUILD_EXE)
    if(ALL_SOURCES)
       find_package(Threads)
       message(STATUS "Developer Studio: Found the following sources: ${ALL_SOURCES}")

       # Add executable to project with all source files found above
       add_executable(${PDS_ALTERNATE_OUTPUT_NAME}_sample ${ALL_SOURCES})

       # Set static/dynamic library properties
       if(PDS_BUILD_STATIC_LIBRARY)
           set_target_properties(${PDS_ALTERNATE_OUTPUT_NAME}_sample PROPERTIES OUTPUT_NAME ${PDS_ALTERNATE_OUTPUT_NAME})
       else()
           set_target_properties(${PDS_ALTERNATE_OUTPUT_NAME}_sample PROPERTIES OUTPUT_NAME ${PDS_ALTERNATE_OUTPUT_NAME}_dyn)
       endif()

       # Add required include directories to project executable
       target_include_directories(${PDS_ALTERNATE_OUTPUT_NAME}_sample PUBLIC "${CMAKE_SOURCE_DIR}/include" "${CMAKE_SOURCE_DIR}" ${CMAKE_SOURCE_DIR}/src)

       # Add required library files to project executable for debug and release configurations
       target_link_libraries(${PDS_ALTERNATE_OUTPUT_NAME}_sample LINK_PUBLIC ${PDS_ALTERNATE_OUTPUT_NAME} ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}
            debug RtiDriver64d optimized RtiDriver64)

       # Install targets to bin directory
       install(TARGETS ${PDS_ALTERNATE_OUTPUT_NAME}_sample DESTINATION bin)
    else()
       message(STATUS "Developer Studio: Executable will not be built since no sources available in ${CMAKE_SOURCE_DIR} or ${CMAKE_SOURCE_DIR}/src")
    endif()
endif()

There is a 3rd CMakeList in play in a lib directory that just adds all the auto-generated header and sources files into a library for the executable to use, but with ~200 files to list it's a bit unwieldy to add here.

Output from the debugger:

'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\MENtOR_Base_Federate_dyn.exe'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\RtiDriver64d.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\msvcp140d.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140d.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\MENtOR_Base_Federate.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140_1d.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Unloaded 'C:\Windows\System32\ucrtbased.dll'
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\boost_thread-vc141-mt-gd-x64-1_68.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\boost_system-vc141-mt-gd-x64-1_68.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\IPHLPAPI.DLL'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\boost_date_time-vc141-mt-gd-x64-1_68.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\rpcrt4.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\kernel.appcore.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\msvcrt.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Users\sgcdadsw\Dropbox\Work\MENtOR\Pitch\DevStudio\MENtOR_Base_Federate\out\install\x64-Debug\bin\pRTIEvolvedDriver64d.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Program Files\prti1516e\lib\vc141_64\libfedtime1516e64d.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Program Files\prti1516e\lib\vc141_64\librti1516e64d.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Program Files\prti1516e\jre\bin\server\jvm.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\user32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\win32u.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\gdi32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\gdi32full.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\msvcp_win.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbase.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\advapi32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\sechost.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\psapi.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\wsock32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\winmm.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\ws2_32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\version.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\winmmbase.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\msvcr120.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\winmmbase.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Unloaded 'C:\Windows\System32\winmmbase.dll'
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\cfgmgr32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\imm32.dll'. Symbols loaded.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Windows\System32\SophosAV\SOPHOS~1.DLL'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Program Files\prti1516e\jre\bin\verify.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Program Files\prti1516e\jre\bin\java.dll'. Cannot find or open the PDB file.
'MENtOR_Base_Federate_dyn.exe' (Win32): Loaded 'C:\Program Files\prti1516e\jre\bin\zip.dll'. Cannot find or open the PDB file.
Exception thrown at 0x000001BA000003B4 in MENtOR_Base_Federate_dyn.exe: 0xC0000005: Access violation reading location 0x0000000000000000.
c++
cmake
visual-studio-2017
32bit-64bit
visual-studio-debugging
asked on Stack Overflow Jul 29, 2020 by DrCD37 • edited Jul 29, 2020 by Alan Birtles

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0