Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Qt Creator附加到Android进程_Android_C++_Qt_Remote Debugging - Fatal编程技术网

从Qt Creator附加到Android进程

从Qt Creator附加到Android进程,android,c++,qt,remote-debugging,Android,C++,Qt,Remote Debugging,我使用QtCreator开发了一个Android动态库,即.so文件。这个.so文件随后被Android应用程序使用,但它是在Eclipse中开发的 我需要调试我的本机代码,但由于它是一个库,我无法从Qt Creator启动应用程序,我必须连接到已经运行的进程 现在,如果它是一个桌面应用程序,我会使用Debug->Start Debug->Attach to Running application,但是如何连接到Android进程,它将在模拟器或连接的手机上运行,更像是远程调试 我想我应该使用D

我使用QtCreator开发了一个Android动态库,即.so文件。这个.so文件随后被Android应用程序使用,但它是在Eclipse中开发的

我需要调试我的本机代码,但由于它是一个库,我无法从Qt Creator启动应用程序,我必须连接到已经运行的进程

现在,如果它是一个桌面应用程序,我会使用
Debug->Start Debug->Attach to Running application
,但是如何连接到Android进程,它将在模拟器或连接的手机上运行,更像是远程调试

我想我应该使用
Debug->Start Debug->Attach to Running Debug Server


但是,我不确定具体步骤是什么-如何启动ADB的调试服务器,以及连接到哪个端口?

连接到
ADB logcat
独立于Qt和您使用的Android源代码。确保可以在路径上找到
adb.exe
,例如:
C:\Android\SDK\platform tools
,并且您拥有用于调试设备的adb驱动程序。如果您正在挣扎,请尝试以下方法:

命令行ADB命令 这将打印出可以找到的任何连接设备:

adb devices
这将清除当前的logcat日志:

adb logcat -c
这将启动到logcat的连接:

adb logcat
通常您不必担心要连接到哪个端口,因为它是由adb自动找到的

也可以通过wifi连接到logcat

adb tcpip
adb connect 192.168.XX.XX:5555

希望这会有所帮助。

因此,似乎有另一种方法可以设置可以正确连接的调试器

使用此版本的gdb设置工具链,并将项目设置为使用它。 在工具->选项->调试器->GDB中,在“附加”中插入命令 启动命令“

我使用调试->开始调试->附加到远程。所有的字段都是 其中(solib绝对前缀是sysroot的别名,以及“的位置”) 调试信息”是solib搜索路径),最后几条 “配置”已存储,因此您可以轻松地将其回调。我有 要在目标上手动启动gdbserver,请设置快捷方式以打开 “连接到远程”对话框,这对我来说非常有用

它很旧(2012年6月),但它更详细地介绍了如何启动
gdbserver
,以及调试器和附加到Qt中进程的设置。它还提到了一些相关的环境变量:


希望能有所帮助。

谢谢,但我不确定这是如何解决我的问题的。我不是问logcat,我已经可以从Eclipse中读取logcat的输出了。我需要在共享库中调试本机代码。通过调试,我指的是设置断点,逐行跟踪/单步执行代码。我知道在eclipse中,当您单步执行库函数时,您可以设置一个sources文件夹。。。然后它应该显示所有可能的信息。很抱歉,我第一次没有理解您问题的意图。我是在QtCreator中开发动态库的,而不是在Eclipse中。我不能在Eclipse中开发它,我需要在QtCreator中编译它并将二进制文件复制到Eclipse。原因是它使用了Qt库,所以我需要使用Qt的工具链。因此,其他建议也不是一种选择。我需要的是附加到Qt Creator的进程中——这就是我的问题所在。您能够将eclipse项目的源代码复制到Qt Creator的项目中吗?我如何启动gdbserver?我是否登录到adb shell?我应该在里面打什么?
set solib-absolute-prefix $ANDROID_SRC/out/target/product/MYPRODUCT/symbols/
set solib-search-path $ANDROID_SRC/out/target/product/MYPRODUCT/symbols/system/lib/