Точка останова и исключения не работают на CLion с C ++ / CLI - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь разрабатывать приложения на C ++ / CLI с помощью CLion. Компиляция прекрасно работает с MSV C, а также отладка. Однако при добавлении флага /clr сборка все еще работает (даже в режиме отладки), но когда выдается исключение или достигается точка останова, я получаю сообщение об ошибке в консоли, и отладчик показывает разборку вместо взлома в код, как и ожидалось. Итак, как правильно работать с кодом C ++ / CLI в Jetbrains CLion?

CMakeList.txt

cmake_minimum_required(VERSION 3.16)
project(TestCLI)

set(CMAKE_CXX_STANDARD 17)

# use C++/CLI so that the Inventor API can be used, some flags must be removed as they are not supported
set(CMAKE_CXX_FLAGS /clr)
if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
    string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()
if(CMAKE_CXX_FLAGS MATCHES "/EHsc")
    string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()

add_executable(TestCLI main.cpp)

Удар по точке останова

Точка останова

enter image description here

Код

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

Консольный выход

C:\Users\navel\CLionProjects\TestCLI\cmake-build-debug\TestCLI.exe

Unhandled Exception: System.InvalidProgramException: Common Language Runtime detected an invalid program.
   at main()
   at _mainCRTStartup()
Exception: Exception 0xe0434352 encountered at address 0x74cc22a2

С исключением

Код

#include <iostream>
#include <exception>

int main() {
    std::cout << "Hello, World!" << std::endl;
    throw std::exception("HERE");
    return 0;
}

Консольный вывод

C:\Users\navel\CLionProjects\TestCLI\cmake-build-debug\TestCLI.exe
Hello, World!

Unhandled Exception: System.Runtime.InteropServices.SEHException: External component has thrown an exception.
   at _CxxThrowException(Void* , _s__ThrowInfo* )
   at main() in C:\Users\navel\CLionProjects\TestCLI\main.cpp:line 6
   at _mainCRTStartup()
Exception: Exception 0xe06d7363 encountered at address 0x74cc22a2

Окно отладчика enter image description here

Аналогичная проблема

Вместо этого проблема с VS: https://developercommunity.visualstudio.com/content/problem/33193/unable-to-debug-set-breakpoints-in-ccli-project.html

...