Android远程gdb输出速度很慢

时间:2016-07-08 17:25:07

标签: android c++ debugging gdb gdbserver

我正在使用GDB(主机上的gdbserver + gdb)调试Android的C ++库,并且我注意到gdb输出非常慢。

E.g。应用程序有大约15个线程,当我键入thread apply all bt时,将所有堆栈跟踪输出到终端/文件需要15-20秒。所有输出大约是200行文本,它应该不会那么慢!

此外,在我的主机(64位Ubuntu)上,同样的事情不会超过0.1-0.2秒!

我怀疑主机上的终端输出可能是导致速度减慢的原因,但事实并非如此。即使使用以下设置,也需要相同的时间:

set width 0
set height 0
set pagination 0
set logging redirect on
set logging overwrite on
set logging file prof.txt
set logging on

我不完全确定减速的主要原因是什么,它是在Android上缓慢堆栈展开或通过gdb< - > gdbserver连接缓慢传输数据。但我怀疑后者,因为当gdb输出数据时,adb进程会消耗大量的CPU时间。

我的问题是:如何让gdb输出文件更快?

如果有人知道如何实现以下目标之一,请提供帮助:

  • 设置一些gdb / adb选项以使数据传输更快
  • 使gdbserver将数据保存到本地文件(在Android设备上),而不是将其发送到远程gdb客户端
  • 为目标设备构建gdb客户端并在设备上进行调试

修改

值得一提的是我使用adb forward在gdb和gdbserver之间建立tcp连接:

adb push $NDK_ROOT/prebuilt/android-arm/gdbserver/gdbserver /data/local/tmp
adb shell chmod 777 /data/local/tmp/gdbserver
adb shell /data/local/tmp/gdbserver :5039 --attach $1 &
adb forward tcp:5039 tcp:5039

0 个答案:

没有答案