在没有IDE的情况下找到导致分段错误的地方



我正在学习一个c++项目。它非常大,build是用cmake创建的。在安装了所有依赖项和库之后,构建就完成了。但是当我运行它时,我得到Segmentation fault

事情是这样的:没有IDE,在VS Code中使用cmake运行这个项目。我想知道是否有可能在代码中找到导致Segmentation fault的这个地方。我知道有GDB调试器来处理这样的事情。我运行了几个命令,得到的结果如下:

gdb build/studpark
...
Reading symbols from build/studpark...
(gdb) run
Starting program: /Users/admin/Downloads/StudPark-develop/build/studpark 
[New Thread 0x2503 of process 7316]
[New Thread 0x1903 of process 7316]
[New Thread 0x1a03 of process 7316]
warning: unhandled dyld version (17)
Thread 3 received signal SIGSEGV, Segmentation fault.
0x00007ff809bec6b2 in ?? ()
(gdb) backtrace
#0  0x00007ff809bec6b2 in ?? ()
#1  0x00007ff7bfeff510 in ?? ()
#2  0x0000000100002abe in main ()
Backtrace stopped: frame did not save the PC

问题是:是否有可能跟踪并找到导致分段错误的代码中的确切位置?

编辑:我用这些标志编译我的项目:

set(CMAKE_CXX_FLAGS "-stdlib=libc++ -g")

我的平台是Mac OS。

我已经为我的情况找到了一个解决方案,下面是我所做的:

  1. 安装这些VS Code扩展- CodeLLDB
  2. 添加配置文件:运行/'Add Configuration…'
  3. 配置文件位于/.vscode/launch。
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/build/main",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
  1. 在我的情况下,我只改变了"program": "${workspaceFolder}/build/main"来显示我的可执行文件的路径。

在完成这些操作后,我能够在带有断点的调试模式下运行我的程序,这有助于我检查项目并发现代码中的错误。

相关内容

  • 没有找到相关文章

最新更新