如何调试CMake构建的CGAL代码?Linux下仅显示汇编的解决方法
解决Linux下CGAL代码调试仅显示汇编的问题
以下是具体的修复步骤:
1. 修正CMakeLists.txt中的错误配置
你的CMake配置存在两处关键错误,需要修改:
- 将错误的
set(DCGAL_DONT_OVERRIDE_CMAKE_FLAGS=TRUE)改为:
注:原配置拼写错误(多了个D)且语法错误(CMake的set命令不用等号,参数用空格分隔)。set(CMAKE_DONT_OVERRIDE_CMAKE_FLAGS TRUE) - 显式关闭编译优化(Debug模式默认会关闭,但显式设置更保险),更新编译选项:
set(CMAKE_C_FLAGS_DEBUG "-g -O0 -DDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -DDEBUG")
修正后的CMakeLists.txt开头部分示例:
# Created by the script cgal_create_CMakeLists # This is the CMake script for compiling a set of CGAL applications. cmake_minimum_required(VERSION 3.1...3.23) project( MySurfaceMesh ) set(CMAKE_BUILD_TYPE "Debug") set(CMAKE_C_FLAGS_DEBUG "-g -O0 -DDEBUG") set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -DDEBUG") set(CMAKE_DONT_OVERRIDE_CMAKE_FLAGS TRUE) # CGAL and its components find_package( CGAL QUIET COMPONENTS ) if ( NOT CGAL_FOUND ) message(STATUS "This project requires the CGAL library, and will not be compiled.") return() endif() # Boost and its components find_package( Boost REQUIRED ) # ... 其余内容保持不变
2. 完全重新构建项目
旧的编译产物可能残留Release模式的信息,需彻底清理后重新编译:
- 删除原有的build目录:
rm -rf build/ - 创建新的build目录并进入:
mkdir build && cd build - 重新运行CMake:
cmake .. - 编译项目:
make -j$(nproc)
3. 确保CGAL库带有调试信息
如果使用系统包管理器安装的CGAL,需要安装对应的调试符号包:
- Debian/Ubuntu系:
sudo apt install libcgal-dev-dbg - Fedora/RHEL系:
sudo dnf install CGAL-debuginfo
如果是自行编译CGAL,需在编译CGAL时同样设置CMAKE_BUILD_TYPE=Debug,确保生成带调试信息的库文件。
4. GDB调试时的正确操作
启动GDB后,若仍出现仅显示汇编的情况,执行以下操作:
- 加载可执行文件:
gdb ./你的可执行文件名 - 允许自动加载系统库的符号:
set auto-load safe-path / - 开始调试:
start(会在main函数第一行停下) - 若仍无法显示源码,手动加载符号:
symbol-file ./你的可执行文件名 - 查看已加载的源文件:
info sources,确认你的代码文件在列表中
内容的提问来源于stack exchange,提问作者user15519994
相关产品推荐
相关产品推荐

