使用NDK r8c,Eclipse 4.2,Windows 7 64
我之前(在其他平台上,通过千兆以太网)使用了远程调试器,用于与本地调试没有区别的大型C ++代码库。 SDK附带的Java调试器也运行得很快。因此,我很困惑为什么gdb连接和跨越代码行的速度太慢。
在我目前的应用程序中,大约有20个静态库和1500个源文件,连接大约需要15秒,步骤大约需要2秒。我更关心踩踏。
有没有人曾经分析过gdb来看看问题是什么?如果有,有什么建议吗?
答案 0 :(得分:3)
我无法想到为什么静态库会减慢速度,但我必须承认我没有考虑过它们。您是否有充分理由相信这一点,或者只是评论您对调试需求的大小和范围的看法?
我们已经开始研究踩踏问题,但还没有任何东西要分享。基本上,瓶颈是ADB(尤其是在Windows上。)此外,在步进时,GDB和gdbserver之间存在大量繁琐的通信,尤其是当您使用具有本地窗口的IDE,注册窗口,表达式窗口,堆栈窗口等时。,每一步都更新。这可能是针对IDE用例进行优化的很多喋喋不休。
我们正在考虑加速步进的一些修复程序将特定于IDE:
使用python脚本在GDB中预处理监视表达式,而不是在IDE中。
实现在GDB和gdbserver之间进行通信的“超级数据包”...以最小化GDB和gdbserver之间的聊天的方式封装特定于IDE的通信的数据包。
我们打算与Android社区分享所有这些。