2023-01-20 302
我正在尝试调试我的应用程序通过JNI使用的本机共享库.我可以使用” GDBSERVER -ATTACH PID”附加到运行的应用程序上,但是当我启动GDBSERVER命令时,我需要实际启动我的应用程序.
关于这个主题有100万个博客命中,但似乎没有一个关于您如何启动应用程序的清楚.他们都说只键入” GDBSERVER 10.0.2.2:1234 ./myprogram”,但到底是” myprogram”.那是myprogram.apk吗?是myprogram.o吗?安装应用程序时是否会创建其他一些文件?如果是这样,它的路径是什么?
虽然可以开发可以直接从外壳启动的免费标准应用程序,但听起来您的代码在Android应用程序框架内运行.因此,您没有可执行文件,而是有一个包含Dalvik类文件的APK以及包括本机共享对象在内的其他资源.
在APK中启动应用程序涉及多个步骤
虽然您无法通过将可执行文件传递给GDBSERVER直接启动APK,但使用am命令将其从外壳触发它.
很容易触发它.
$ adb -d shell
# am
usage: am [subcommand] [options]
start an Activity: am start [-D] <INTENT>
-D: enable debugging
send a broadcast Intent: am broadcast <INTENT>
start an Instrumentation: am instrument [flags] <COMPONENT>
-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
-e <NAME> <VALUE>: set argument <NAME> to <VALUE>
-p <FILE>: write profiling data to <FILE>
-w: wait for instrumentation to finish before returning
start profiling: am profile <PROCESS> start <FILE>
stop profiling: am profile <PROCESS> stop
<INTENT> specifications include these flags:
[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
[-c <CATEGORY> [-c <CATEGORY>] ...]
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...]
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...]
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...]
[-n <COMPONENT>] [-f <FLAGS>] [<URI>]
# am start -n com.android.browser/.BrowserActivity
Starting: Intent { cmp=com.android.browser/.BrowserActivity }
#
您的应用程序运行后,请像以前一样使用gdbserver –attach <pid>.如果您很幸运,您的应用程序会等待一些用户互动,然后再调用本机代码,使您有机会附加并将断点设置在GDB中.
Google提供了解决您问题的官方解决方案:’NDK-GDB’
它包含在NDK中. IIRC,它要求您在APK内部捆绑着GDBSERVER的副本; iirc,如果您使用” ndk-build”构建APK并指定了适当的参数.
请参阅$ ndk/docs/ndk-build.html和$ ndk/docs/ndk-gdb.html
中的Google的文档
对于GDBSERVER可执行文件,我只是从Android SDK的NDK文件夹中复制了它:
运行gdbserver,设备插入:
对于gdbclient可执行文件,我必须从 GDB源代码为Android设备配置正确的体系结构(ARM64).在单独的Mac终端窗口/选项卡上:
以上所述是小编给大家介绍的如何用GDBSERVER调试Android上的应用程序?,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26197.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态