2016-06-28 212 views
2

我交叉编译Qt并创建了SD卡映像,并使用losetup装载。与直接sshfs挂载相比,现在编译速度更快。应用程序运行OK。现在,我想调试哪个死了很慢,看起来好像它正在将文件复制回开发机器进行调试。我看到这个建议:非常缓慢的调试

File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.

我使用gdb-multiarch并得到了gdbserver(目标板)。

我有点迷失在这里。在哪里设置这个选项?我向二进制提供了--sysroot参数,但没有用。任何帮助真的很感激。

更新:使用Qt Creator进行开发。

回答

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的最新版本默认sysroottarget:,这意味着“从目标中获取文件”。如果你在本地调试,这只是本地文件系统访问;但如果您正在远程调试并且连接速度较慢,这可能会有点痛苦。为了使这个速度,这个想法是让你需要的所有文件的本地副本,然后用set sysroot在这个本地副本指向GDB。

这种方法的主要问题是,如果您的本地副本是不同步的遥控器,你可以结束了混乱的GDB并获得废话结果。我不确定,但也许可以启用构建ids有点缓解这个问题(当然理论上gdb可以检测到构建id不匹配和警告,我只是不记得它实际上是否)。

+0

我正在使用Qt Creator。谢谢 – ramtheconqueror

+0

@ramtheconqueror所以? Qt Creator是一个IDE,而不是调试器。它使用gdb来调试目标上的代码。您可以从Qt Creator的调试器日志/命令窗格中发出调试器命令。通过转到以下菜单项来显示它:'Window-> Views-> Debugger Log'。在那里你可以改变sysroot设置。 –