我已经交叉编译了 Qt 并创建了 SD 卡映像并使用losetup. 与直接sshfs安装相比,现在编译速度要快得多。应用程序运行正常。现在,我想调试它的速度太慢了,它看起来像是将文件复制回开发机器进行调试。我看到这个建议:
File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
我正在使用gdb-multiarch并且已经得到gdbserver(在目标板上)。
我有点迷失在这里。在哪里设置这个选项?我已经--sysroot为二进制文件提供了参数,但没有用。任何帮助都非常感谢。
更新:使用 Qt Creator 进行开发。
sysroot是一个 gdb 设置。您可以使用set sysroot命令在 gdb 中设置它。例如:
(gdb) help set sysroot
Set an alternate system root.
The system root is used to load absolute shared library symbol files.
For other (relative) files, you can add directories using
`set solib-search-path'.
Run Code Online (Sandbox Code Playgroud)
此设置控制 gdb 如何尝试查找所需的各种文件,尤其是您正在调试的可执行文件和共享库。
gdb 的最新版本默认sysroot为target:,这意味着“从目标中获取文件”。如果您在本地调试,这只是本地文件系统访问;但是如果您正在远程调试并且连接速度很慢,这可能会有点痛苦。为了加快速度,我们的想法是保留您需要的所有文件的本地副本,然后使用set sysroot将 gdb 指向该本地副本。
这种方法的主要问题是,如果您的本地副本与远程副本不同步,您最终可能会混淆 gdb 并获得无意义的结果。我不确定,但也许启用 build-ids 可以在某种程度上缓解这个问题(当然理论上 gdb 可以检测到 build-id 不匹配并发出警告,我只是不记得它是否真的这样做了)。
| 归档时间: |
|
| 查看次数: |
3189 次 |
| 最近记录: |