【问题标题】:CLion debugger not working when using gcc使用 gcc 时 CLion 调试器不工作
【发布时间】:2017-11-14 20:13:17
【问题描述】:

我正在尝试配置 CLion,以便我可以使用 openMP。在我的 Mac 上使用默认设置时,编译器会发出叮当声。默认 Apple clang 不支持 openMP。

当我将编译器更改为 GCC 时,调试器不会在断点处停止。程序就像执行编译文件时一样运行。

下面的 CMakeLists.txt 文件与 CLion 调试器完美配合。当我取消注释编译器标志时,调试器会忽略断点。

cmake_minimum_required(VERSION 3.8)
project(CLionTest)

set(CMAKE_C_STANDARD 99)
#set(CMAKE_C_COMPILER /usr/local/bin/gcc-7)
#set(CMAKE_C_FLAGS -fopenmp)
#set(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")

set(MAIN main.c)
add_executable(CLionTest ${MAIN})

add_custom_target(CLionTestMake COMMAND make all WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})

我该如何解决这个问题?

工具链设置: CMake 可执行文件:捆绑的 CMake 3.8.2 调试器:捆绑的 LLDB 3.9.0

main.c:

#include <stdio.h>
#include <unistd.h>
#ifdef _OPENMP
  #include <omp.h>
#endif

int main() {
    printf("Hello, World!\n");

    #pragma omp parallel
    {
        #ifdef _OPENMP
          int size = omp_get_num_threads();
          int rank = omp_get_thread_num();
        #else
          int rank = 0;
          int size = 1;
        #endif
        printf("%d/%d\n", rank, size);
    };

    return 0;
}

【问题讨论】:

    标签: c debugging gcc clang clion


    【解决方案1】:
    set(CMAKE_C_FLAGS -fopenmp)
    set(CMAKE_C_FLAGS_DEBUG "-D_DEBUG")
    

    您正在替换 C 标志而不是附加它们,因此您将删除生成调试符号的内置 -g 选项。相反,做

    set(CMAKE_C_FLAGS "${CMAKE_CFLAGS} -fopenmp")
    set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -D_DEBUG")
    

    【讨论】:

    • @MagnusWang:这很奇怪,理论上当您使用-DCMAKE_BUILD_TYPE=Debug 编译时,-g 应该已经包含在默认变量中。
    猜你喜欢
    • 2022-07-19
    • 2017-02-26
    • 2021-06-14
    • 2020-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2012-06-23
    相关资源
    最近更新 更多