在没有 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.
我已经为我的案例找到了解决方案,这是我所做的:
- 安装了这些 VS 代码扩展 - CodeLLDB
- 已添加配置文件:运行/'Add Configuration...'
- 配置文件位于
/.vscode/launch.json,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/build/main",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
- 在我的例子中,我只更改了
"program": "${workspaceFolder}/build/main"
以显示我的可执行文件的路径。
完成这些操作后,我能够 运行 我的程序处于带有断点的调试模式,这有助于我检查项目并查找代码中的错误。
我正在研究一个 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.
我已经为我的案例找到了解决方案,这是我所做的:
- 安装了这些 VS 代码扩展 - CodeLLDB
- 已添加配置文件:运行/'Add Configuration...'
- 配置文件位于
/.vscode/launch.json,如下所示:
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/build/main",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
- 在我的例子中,我只更改了
"program": "${workspaceFolder}/build/main"
以显示我的可执行文件的路径。
完成这些操作后,我能够 运行 我的程序处于带有断点的调试模式,这有助于我检查项目并查找代码中的错误。