使用 GDB 进行远程调试
在常见情况下,如果远程机器或容器已安装 GDBserver,且通过单击“Run ”按钮(或按Ctrl+R)已配置并能正常执行应用程序,则您可以通过单击“Debug ”按钮(或按F5)开始远程调试。
此时,“Qt Creator ”会自动按正确顺序启动并连接远程机器上的调试服务器和应用程序,以及开发主机上的实际调试器。
这是首选的方法。
如果无法满足此自动设置的要求,但您的远程机器能够运行 GDB 服务器(或任何使用 GDB 串行协议的兼容探针),您仍然可以使用Qt Creator 来调试您的应用程序。
应用程序正在运行,可通过 SSH 访问远程机器
如果您想附加到远程机器上已运行的应用程序,并且可以通过 SSH 从本地机器主机启动调试服务器,请转到Debug >Start Debugging >Attach to running applications 。
应用程序未运行,但可通过终端访问远程机器
如果无法通过 SSH 从本地机器启动调试服务器,请查阅设备文档,了解启动调试服务器的其他方法。
如果您能够通过终端访问远程机器,且该机器上已安装 GDB 服务器,则可以手动将可执行文件传输到远程机器,并通过传入端口号和可执行文件来启动gdbserver :
gdbserver :1234 /path/to/executable
此时通常会返回以下响应:
Process /path/to/executable created; pid = 5159 Listening on port 1234
在运行Qt Creator 的本地机器上:
- 转到Debug > “Start Debugging ” > “Attach to Running Debug Server ”。

- 在Kit 中,选择用于构建该项目的构建和运行套件。
- 在“Server port ”中,输入远程计算机的名称和要使用的端口号。
- 在“Local executable ”中,指定本地计算机上应用程序可执行文件的路径。
- 在“Command line arguments ”中,指定要传递给可执行文件的命令行参数。
- 在“Working directory ”中,指定工作目录。默认值为构建结果所在的目录。
- 对于控制台应用程序,请选择“Run in terminal ”。
- 选择“Break at "main" ”可在主函数处暂停调试器。
- 选择“Use target extended-remote to connect ”可在“
target extended-remote mode”中建立连接。在此模式下,当被调试的应用程序退出或您与其断开连接时,调试器仍会保持与目标设备的连接。 您可以重新运行应用程序、附加到正在运行的应用程序,或使用针对该目标的特定监视命令。例如,除非使用--once选项调用GDB,否则它不会退出,但您可以通过使用monitor exit命令使其退出。 - 在Override SysRoot 中,指定要使用的
sysroot的路径,以替代默认的sysroot。 - 在“Init commands ”中,输入在与目标建立连接后立即执行的命令。
- 在“Reset commands ”中,输入在重置与目标的连接时要执行的命令。
- 在“Debug information ”中,指定用于存储调试信息的位置。不能使用空路径。
- 在“Override server channel ”中,指定要使用的通信通道,例如串行线或自定义端口。
- 在“Recent ”中,选择要使用的最近配置。
- 选择“OK ”以开始调试。
默认情况下,无响应的 GDB 进程将在 40 秒后终止。若要在“GDB timeout ”中延长超时时间,请转至“Preferences ” > “Debugger ” > “GDB ”。
有关在 GDB 中以target extended-remote 模式连接的更多信息,请参阅《使用 GDB 调试:连接到远程目标》。
应用程序正在运行,可通过终端访问远程机器,且 gdbserver 可用
这种情况与上一节几乎完全相同,唯一的区别在于启动gdbserver 的方式不同:
gdbserver --attach :1234 <PID of running application>
使用 SSH 端口转发
若要对无法公开 GDB 服务器端口的远程目标进行调试,请使用 SSH 隧道将远程端口映射到本地端口。Qt Creator 会自动检测本地和远程端口。
要启用 SSH 端口转发:
- 转到Preferences > “Devices ”。

- 在Device 中,选择Remote Linux Device 。
- 选择“Use SSH port forwarding for debugging ”。
- 选择“Apply ”。
通过命令启动 GDB 服务器
若要将 GDB 服务器的配置作为项目的一部分进行自动化并持久化(例如,您有一个在远程设备上启动gdbserver 的脚本),请添加一个“Remote Debugger ”运行配置。每次开始调试时,启动器命令都会自动运行,因此您无需手动设置连接。
要添加“远程调试器”运行配置:
- 转到“Projects ” > “Run Settings ”。
- 选择“Add ” > “Remote Debugger ” > “Create ”。
- 在“Command ”中,指定用于建立 GDB 服务器连接的脚本或命令。
- 在“Command line arguments ”中,指定要传递给启动器命令的任何参数。
- 在Symbol file (local executable) 中,指定本地机器上应用程序可执行文件的路径。
- 在“Server channel ”中,指定要使用的通信通道。默认值为
tcp://127.0.0.1:1234。 - 选择“Break at "main" ”可在主函数处暂停调试器。
- 对于控制台应用程序,请选择“Run in terminal ”。
- 选择“Use "target extended-remote" to connect ”以在扩展远程模式下连接。
- 在套件选择器中选择运行配置,然后按F5键开始调试。
Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.