目標:我想用 Raspberry Pi 400 在 Ubuntu 上設定 VScode 除錯。
我所做的:我能夠使用sudo ./program_name. 我必須運行 sudo 否則我會收到權限被拒絕錯誤。我不想像通常不鼓勵那樣使用 root 權限運行 VScode。
問題:當我啟動除錯器(按 F5)并包含wiringPi.h時,我收到以下錯誤:
wiringPiSetup: Unable to open /dev/mem or /dev/gpiomem: Permission denied.
Aborting your program because if it can not access the GPIO
hardware then it most certianly won't work
Try running with sudo?
[1] Done "/usr/bin/gdb" --interpreter=mi --tty=${DbgTerm} 0<"/tmp/Microsoft-MIEngine-In-j40gmjsr.mas" 1>"/tmp/Microsoft-MIEngine-Out-vltmyj1b.a3g"
我的 launch.json 檔案如下所示:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "C/C - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "C/C : g build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
我應該怎么做才能使用我的設定啟動除錯器?我可以在 launch.json 檔案中添加一些內容嗎?
uj5u.com熱心網友回復:
gdb沒有權限打開/dev/mem或/dev/gpiomem。您可以采用兩種方法。
選項 1——提升 GDB 的權限
與其以 root 身份運行 vscode(這已經被建議,并且您正確地指出這通常是一個壞主意),您可以在 vscode 中以 root 身份運行 gdb,通過呼叫它sudo gdb來啟動除錯器,而不是gdb.
選項 2——降級/dev/mem和/dev/gpiomem
另一種選擇是讓您自己訪問/dev/mem并且/dev/gpiomem不提升您的權限。/dev/gpiomem授予訪問權限幾乎是無害的,但允許非 root 訪問/dev/mem是一個主要的安全漏洞,不可取。如果一切可能,請選擇選項 1。
要授予您打開這些檔案的使用權限,您可以執行以下兩項操作之一。
1.) 將自己添加到擁有組。/dev/mem歸該組所有kmem,因此將您的主要用戶添加到該組將允許您讀取訪問權限。
2.) 修改檔案權限。sudo chmod ugo xwr fname將允許任何用戶讀取、寫入或執行該檔案。這通常是不安全的,但如果您僅將其激活片刻以解決某些問題,則很有幫助。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/524979.html
