Я пытаюсь разрабатывать приложения на 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)
Удар по точке останова
Точка останова
Код
#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
Окно отладчика
Аналогичная проблема
Вместо этого проблема с VS: https://developercommunity.visualstudio.com/content/problem/33193/unable-to-debug-set-breakpoints-in-ccli-project.html