可以使用 root 权限运行我的应用程序sudo
,如下所示:
sudo ./MyApp
是否可以使用 QtCreator 使用 root 权限调试我的 Qt 应用程序?如何在 Ubuntu 系统上执行此操作?
答案1
- 去
Tools-> Options-> Environment
- 在里面标签
General
下面**System** Group
有一个Terminal
选项。 - 默认值设置为
/usr/bin/xterm -e
。将其替换为/usr/bin/xterm -e sudo
或/usr/bin/gnome-terminal -x sudo
。 - 按下
Apply
并OK
纽扣。 - 在下面模式选择器点击
Projects
,选择Run
选项。在Run
组框选择Run in Terminal
。
记住:sudo
必须有选项
编辑 /etc/sudoers
使用sudo visudo
下次运行该程序时,它将在新的xterm
或gnome-terminal
具有超级用户权限还会询问 root 密码。
答案2
我通过以 root 身份启动 Qt Creator 解决了这个问题。
sudo /usr/bin/qtcreator
现在,当我编译和调试时,它将获得应用程序的 root 权限。现在可以使用 root 权限调试我的应用程序了。
答案3
我将使用 GDB 服务器(以 root 身份)从终端运行该程序,然后使用 QtCreator 中的 gdb 连接到服务器。您可以使用以下命令启动 gdbserver:
$ sudo gdbserver host:2345 ./MyApp
在这里,您正在使用端口 2345 托管服务器。您还可以检查您的应用程序是否确实以 UID 0 运行。
$ sudo ps -u
现在,在 Qt Creator 中,转到 Debug -> Start Debugging -> Attach to Running Debug Server。填写表单...最重要的是端口和服务器地址。我选择了 127.0.0.1 和 2345。您可以在 main 处选择 break 以在程序开始时中断。直到您连接后,GDB 服务器才会启动程序。
答案4
Qt 支持论坛建议采取以下操作:
在 Qt Creator 中的选项 -> 设备中添加远程 Linux 设备。将其地址设置为 localhost,用户设置为 root。创建一对身份验证密钥并将公钥粘贴到/root/.ssh/authorized_keys
。然后在选项 -> 套件中克隆桌面套件,并将新套件的设备设置为您在上一步中创建的设备。
现在,当您开始调试时,Qt Creator 应该自动以 root 身份通过 ssh 连接到本地主机,启动 gdbserver 并执行调试。
它也可以在无需调试的情况下运行。
也许您应该在远程主机上设置程序的安装,但那是另一回事,并且对于 Qmake 和 QBS 来说,做法也不同。