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

Find place that causes segmentation fault without IDE

我正在研究一个 C++ 项目。它很大,构建是用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")

我的平台是MacOS.

我已经为我的案例找到了解决方案,这是我所做的:

  1. 安装了这些 VS 代码扩展 - CodeLLDB
  2. 已添加配置文件:运行/'Add Configuration...'
  3. 配置文件位于 /.vscode/launch.json,如下所示:
{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "lldb",
      "request": "launch",
      "name": "Debug",
      "program": "${workspaceFolder}/build/main",
      "args": [],
      "cwd": "${workspaceFolder}"
    }
  ]
}
  1. 在我的例子中,我只更改了 "program": "${workspaceFolder}/build/main" 以显示我的可执行文件的路径。

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