C++ 中出现Segment问题的常见原因有:
如果要定位Segment fault问题,需要进行如下几步:
gdb your_program
(gdb) break main
(gdb) run
(gdb) backtrace
同时要在CMakeLists.txt文件中配置编译时启用符号调试信息, 在C++或者C中的设置分别如下:
cmake_minimum_required(VERSION 3.0)
project(YourProjectName)
# 设置C++编译器标志以启用符号调试信息
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
# 或者,如果您的项目是用C编写的,使用以下命令
# set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g")
# 添加您的源代码文件
add_executable(YourExecutableName your_source_files.cpp)
# 可以继续添加其他配置和目标
最后就可以定位到产生segment fault 问题的代码的堆栈信息了,具体可以定位到行号。
直接上结果:
参考:
1 C++ C++程序中遇到的常见错误及解决方案:’segmentation fault’错误
2 chatgpt