You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何调试CMake构建的CGAL代码?Linux下仅显示汇编的解决方法

解决Linux下CGAL代码调试仅显示汇编的问题

以下是具体的修复步骤:

1. 修正CMakeLists.txt中的错误配置

你的CMake配置存在两处关键错误,需要修改:

  • 将错误的set(DCGAL_DONT_OVERRIDE_CMAKE_FLAGS=TRUE)改为:
    set(CMAKE_DONT_OVERRIDE_CMAKE_FLAGS TRUE)
    
    注:原配置拼写错误(多了个D)且语法错误(CMake的set命令不用等号,参数用空格分隔)。
  • 显式关闭编译优化(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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 07:07:02