我正在研究一個 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")
我的平臺是 Mac OS。
uj5u.com熱心網友回復:
我已經為我的案例找到了解決方案,這就是我所做的:
- 安裝了這些 VS 代碼擴展 - CodeLLDB
- 添加組態檔:運行/'添加配置...'
- 組態檔位于 <root_dit>/.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"為顯示可執行檔案的路徑。
完成這些操作后,我能夠在帶有斷點的除錯模式下運行我的程式,這有助于我檢查專案并找到代碼中的錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/475114.html
