单步调试cmake代码的时候每次步进,跟踪光标都不按顺序走,但是直接运行程序却能得到正确结果

电脑配置:今年刚买的机械师T58-V, i7-11800H,16G,8核16线程。
环境:win10中安装虚拟机VMware,运行Ubuntu系统,在Ubuntu的CLion中调试C++的cmake工程代码。代码是深蓝学院的路径规划课程第二节的代码。
(我觉得我这个问题跟虚拟机啥的没有关系,因为我装了Ubuntu双系统之后还是会遇到跟踪光标乱跳的问题,而且每次调试的时候光标虽然乱跳,但是乱跳的位置都是一样的。)

问题:
开始调试的时候光标指在245行

img

但是我步进一次的时候他会跳到一个.h文件当中(我没有步入)

img

再次点步进的时候又会跳到另一个.h文件中

img

这个cpp文件是这样的,在别的cpp文件中还会出现从50行步进之后变到30行这种情况。变量的情况也会变回程序运行到30行时该有的结果。

前两天我在这个工程的demo_node.cpp和random_complex_generator.cpp文件中也遇到了这种情况,当时网上查资料说是什么编译优化或者多线程问题,但是还是没有搞定

img


但是睡一觉起来之后这个问题居然消失了。

不过同样,这个工程下的waypoint_generator.cpp却依然存在这个问题

img

现在我觉得可能时Cmakelist的问题,附上demo_node.cpp和random_complex_generator.cpp的CmakeList

cmake_minimum_required(VERSION 2.8.3)
project(grid_path_searcher)

find_package(catkin REQUIRED COMPONENTS 
    roscpp 
    std_msgs
    nav_msgs
    visualization_msgs 
)

find_package(Eigen3 REQUIRED)
find_package(PCL REQUIRED)

set(Eigen3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})

catkin_package(
  INCLUDE_DIRS include
)

include_directories(
    include 
    SYSTEM 
    third_party
    ${catkin_INCLUDE_DIRS} 
    ${Eigen3_INCLUDE_DIRS} 
    ${PCL_INCLUDE_DIRS}
)

set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS} -O0 -Wall") # -Wextra -Werror

add_executable( demo_node 
    src/demo_node.cpp
    src/Astar_searcher.cpp
    src/read_only/JPS_utils.cpp
    src/read_only/JPS_searcher.cpp
    )

target_link_libraries(demo_node 
    ${catkin_LIBRARIES}
    ${PCL_LIBRARIES} 
)

add_executable ( random_complex 
    src/random_complex_generator.cpp )

target_link_libraries( random_complex
    ${catkin_LIBRARIES}
    ${PCL_LIBRARIES} )  

以及waypoint_generator.cpp的CmakeList文件

cmake_minimum_required(VERSION 2.8.3)
project(waypoint_generator)

set(CMAKE_VERBOSE_MAKEFILE "true")
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
    #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
    set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS} -O0 -Wall") # -Wextra -Werror
elseif(COMPILER_SUPPORTS_CXX0X)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
        message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()

set(ADDITIONAL_CXX_FLAG "-Wall -O3 -march=native")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADDITIONAL_CXX_FLAG}")

find_package(catkin REQUIRED COMPONENTS
  roscpp
  tf
  nav_msgs
)
catkin_package()

include_directories(include)
include_directories(
  ${catkin_INCLUDE_DIRS}
)

add_executable(waypoint_generator src/waypoint_generator.cpp)

target_link_libraries(waypoint_generator
   ${catkin_LIBRARIES}
)

请问这是怎么回事?困扰我非常久了!!