我已经交叉编译了Qt并创建了SD卡图像并使用losetup
挂载。与直接sshfs
mount相比,现在的编译速度要快得多。应用运行正常。现在,我想调试哪个死得很慢,看起来它正在将文件复制回dev机器进行调试。我看到了这个建议:
File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
我正在使用gdb-multiarch
并且已经gdbserver
(在目标板上)。
我有点迷失在这里。在哪里设置此选项?我已经为二进制文件提供了--sysroot
参数但没有用。任何帮助都非常感谢。
更新:使用Qt Creator进行开发。
答案 0 :(得分:2)
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'.
此设置控制gdb如何尝试查找所需的各种文件,特别是您正在调试的可执行文件和共享库。
gdb的最新版本默认sysroot
到target:
,这意味着“从目标中获取文件”。如果你在本地调试,这只是本地文件系统访问;但如果您正在远程调试并且连接速度很慢,这可能会有点痛苦。为了加快速度,我们的想法是保留您需要的所有文件的本地副本,然后使用set sysroot
将gdb指向此本地副本。
这种方法的主要问题是,如果您的本地副本与遥控器不同步,您最终可能会混淆gdb并获得无意义的结果。我不确定但也许启用build-id可以稍微缓解这个问题(当然理论上gdb可以检测build-id不匹配并发出警告,我只是不记得它是否确实存在)。
答案 1 :(得分:0)