Android远程gdb输出速度非常慢 < >我用GDB(主机上的GDbServ+GDB)调试Android的C++库,我注意到GDB的输出非常慢。

Android远程gdb输出速度非常慢 < >我用GDB(主机上的GDbServ+GDB)调试Android的C++库,我注意到GDB的输出非常慢。,android,c++,debugging,gdb,gdbserver,Android,C++,Debugging,Gdb,Gdbserver,例如,应用程序大约有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 loggi

例如,应用程序大约有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上的堆栈展开缓慢,要么是通过gdbgdbserver连接缓慢传输数据。但我怀疑是后者,因为当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

还尝试使用Wi-Fi代替USB adb连接,但没有效果。“Android上的堆栈展开速度慢,或者通过gdbgdbserver连接传输数据速度慢。但我怀疑是后者。”你可以在Android上尝试
gdb
,看看你的问题是与前者有关还是与后者有关。因此我可以交叉编译gdb客户端(完整gdb)手臂。但它能在安卓系统上工作吗?我是否只需要获取最新的gdb代码并遵循此说明?