2023-01-20 386
我正在使用 https://www.youtube.com/watch? v = kjsc-lkugm8 尝试调试一个简单的ndk应用程序.我已经完成了视频中的所有操作,除了:
但是,在我的情况下,视频中使用的闪电蛋白被击中.我正在尝试在第四天调试一个简单的NDK测试项目.已经研究了很多材料:
,但不能击中一个该死的断点.如果您可以做到这一点,请提供帮助.
以下是我为内部Android开发团队写的教程的摘录.其中的大部分来自此博客: http://mhandroid.wordpress.com/
重要说明:
打开AndroidManifest.xml,选择”应用程序”选项卡,并设置 Debuggable=true .即使在用户模式下运行的设备上运行的设备,也将使应用程序可辩论.
4. 构建本地资源.从终端中,输入项目目录并输入:
ndk-build -B
您应该看到以下输出:
gdbserver:[Arm-linux-androideabi-4.4.4.3] libs/armeabi/gdbserver
gdbsetup:libs/armeabi/gdb.setup
compile ++拇指:debuggingtestjni
共享Library:libdebuggingtestjni.so
安装:libdebuggingtestjni.so => libs/armeabi/libdebuggingtestjni.so
- 在Eclipse工具栏中,您会看到一个绿色错误.单击错误旁边的小箭头,然后选择”调试配置……”.
- 双击左侧的树结构中的” Android应用程序”.这将为新的Android应用程序调试配置创建模板.
- 在”名称:”字段中,将其命名为” debuggingtest java调试”,以确保您知道此配置专门适用于debuggingtest项目,并针对您的Java源.
- “项目:”下方,单击”浏览…”按钮,然后选择” debuggingtest”.
- 单击”应用”以保存您的更改.
- 单击”关闭”.
- 在Eclipse工具栏中,单击错误旁边的小箭头,然后选择”组织收藏夹……”.
- 单击”添加…”
- 选择” debuggingtest java调试”,然后单击”确定”.
您的新调试配置现已创建并添加到您的收藏夹中.您可以通过单击工具栏中的错误旁边的小箭头来访问您的收藏夹. ” debuggingtest java调试”应该位于列表的顶部.
在Eclipse工具栏中,单击错误旁边的小箭头,然后选择” debuggingtest java调试”.这将部署并安装debuggingtest.apk到您的已连接的Android设备并启动调试器.
导航到终端中的debuggingtest项目目录,并键入以下内容:
ndk-gdb
如果命令成功,则应看到以下内容:
GNU GDB 6.6
版权(C)2006 Free Software Foundation,Inc.
GDB是免费软件,由GNU通用公共许可证涵盖,您是
欢迎在某些条件下更改和/或分发其副本.
键入”显示复制”以查看条件.
GDB绝对没有保证.键入”显示保修”以获取详细信息.
该GDB被配置为” – horst = x86_64-linux-gnu -target = arm-felf-linux”.
(找不到调试符号)
…
如果您忘了在此步骤之前开始调试应用程序,则将获得以下内容:
错误:无法提取在设备/仿真器上应用的PID.
您确定应用程序已经启动吗?
考虑使用-Start或-launch =如果不是.
如果您的android.mk文件已畸形或包含$(INFO)块,则将获得以下内容:
CP:Target ./obj/local/armeabi/gdb.setup’ is not a directory /home/Dev/NDK/ndk-gdb: 639: cannot create start DebuggingTest/jni/Android.mk end DebuggingTest/jni/Android.mk ./obj/local/armeabi/gdb.setup: Directory nonexistent /home/Dev/NDK/ndk-gdb: 640: cannot create start DebuggingTest/jni/Android.mk end DebuggingTest/jni/Android.mk ./obj/local/armeabi/gdb.setup: Directory nonexistent start: invalid option: -x Try 开始-HELP’有关更多信息.
如果NDK-GDB已经在运行,您将获得以下内容:
错误:另一个调试会话正在运行,使用 – 杀死它.
在继续之前解决错误. NDK-GDB必须成功运行.
运行 ndk-gdb 不仅可以确保我们到目前为止做正确的一切,还可以创建 app_process , gdb.setup 和 libc.so 在我们项目的OBJ/local/armeabi/sub-directory中的文件.这些文件将在以后的步骤中需要.
- 在您的终端中,类型 ctrl + z 停止ndk-gdb.
- 在Eclipse中,选择运行→终止.
4.创建C/C ++调试配置.我们需要创建一个调试配置,以踏入C/C ++源代码.- 在Eclipse 中,单击错误旁边的小箭头,然后选择”调试配置……”.
- 双击左侧的树结构中的” C/C ++应用程序”.这将为新的C/C ++应用程序调试配置创建模板.
- 在”名称:”字段中,将其命名为” debuggingtest c和cpp debug”,以确保您知道此配置专门适用于debuggingtest项目,并针对您的C/C ++源.
- 在”主”选项卡中:
- 单击” C/C ++应用程序:”字段上的”浏览…”.
导航到”/home/test/testing/debuggingtest/obj/local/armeabi/app_process”,然后单击”确定”.- 单击”项目:”字段.
上的”浏览…”
- 选择” debuggingtest”,然后单击”确定”.
- 检查”禁用自动构建”框.
- 在表单的底部,您会看到”使用GDB(DSF)…… – 选择其他…”.按”选择其他…”按钮.
- 在弹出窗口中,选中”使用配置特定设置”框.
- 在列表中选择”标准创建过程启动器”,然后按” OK”.
- 在”调试器”选项卡中:
- 单击”调试器:”字段上的组合框,然后选择” gdbserver”.
- 取消选中”停止启动的启动:” box.
- 在”主”子标签中:
- 单击” GDB调试器:”字段.
上的”浏览…”
- 导航到”/home/dev/ndk/toolchains/arm-linux-androideabi-4.4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gdb”,然后单击”确定”. 此调试器与Android NDK .
分发
- 在” gdb命令文件:”字段中,键入”/home/test/testing/debuggingtest/obj/local/armeabi/gdb2.setup”. GDB2.SETUP文件尚不存在,但我们会尽快创建它.
- 选中”使用完整的文件路径设置断点”框.
- 在”连接”子标签中:
- 设置”类型:”到TCP
- 设置”端口号:”到5039
- 单击”应用”以保存您的更改.
- 单击”关闭”
- 在Eclipse工具栏中,单击错误旁边的小箭头,然后选择”组织收藏夹……”.
- 单击”添加…”
- 选择” debuggingtest c和cpp调试”,然后单击”确定”.
您的新调试配置现已创建并添加到您的收藏夹中.您可以通过单击工具栏中的错误旁边的小箭头来访问您的收藏夹. ” debuggingtest c和cpp调试”应位于列表的顶部.
>
- 在您的文件资源管理器中,导航到”/home/test/testing/debuggingtest/obj/local/armeabi/”.
- 复制” gdb.setup”文件,然后将其粘贴到同一文件夹中.结果应该是一个名为” gdb(copy).setup”的文件.
- 重命名” gdb(copy).setup”到” gdb2.setup”.
- 通过双击文件打开gdb2.setup.
- 替换为” SET solib-search-path ./obj/local/armeabi”,用” set solib-search-path/home/test/testing/testing/debuggingtest/obj/local/armeabi”.
- 替换” file ./obj/local/armeabi/app_process”,用” file/home/test/testing/debuggingtest/obj/local/armeabi/app_process”.
- 删除读取”目标遥控器:5039″的行.
- 保存并关闭文件.
5. 创建ndk-gdb-eclipse.最后一个日食家政项目. Eclipse将运行GDB二进制本身,因此我们必须从NDK-GDB中删除GDB的执行.我们将通过执行另一个复制式版本来保存原始内容.- 在您的文件资源管理器中,导航到”/home/dev/ndk”.
- 复制” NDK-GDB”文件,然后将其粘贴到同一文件夹中.结果应该是一个名为” ndk-gdb(copy)”的文件.
- 重命名” ndk-gdb(copy)”为” ndk-gdb-eclipse”.
- 通过右键单击→使用其他应用程序打开ndk-gdb-eclipse …
- 从应用程序列表中选择文本编辑器
- 在文件中,找到读” $ gdbclient -x native_path $GDBSETUP”的行(可能在最底部),并通过将其列入”#”字符.
来对其进行评论.
- 保存并关闭文件.
当在Eclipse IDE内调试本机时,我们将使用 ndk-gdb-eclipse 而不是 ndk-gdb ..
- 在第20行(system.out.println(” hello world!”))中,请在debuggingTestactivity.java文件中放一个断点.
).
- 在进行本机代码中任何调用之前,在主活动中插入断点. onCreate()通常是最佳的地方.
- 单击错误旁边的小箭头并选择” debuggingtest java调试”.
- 您会在屏幕上看到一个标有”确认透视开关”的弹出窗口.如果您想切换到调试视角,请按”是”.我建议这样做.
- 在这一点上,您应该已经达到了您设置的断点.
警告:我们刚刚击中onCreate函数内部的断点.在所有静态loadLibrary呼叫后,将调用此功能.请注意,在弹药函数之外,静态块内部有一个System.loadLibrary("DebuggingTestJNI").在我们输入onCreate函数之前,此载荷呼叫将执行,以确保我们的本机符号在我们击中初始断点时加载.必须在进行突破点之前停止!
- 在您的终端中,导航到debuggingtest目录并键入以下命令:
ndk-gdb-eclipse←请记住,我们在步骤6中创建了此文件- 如果成功,该命令应在没有任何响应的情况下完成.
- 通过单击错误旁边的小箭头,然后选择” debuggingtest c and cpp debug”
,请返回日食并运行C/C ++调试器
- 注意:当我这样做时,我会看到Eclipse控制台中的数十个错误,但是事情似乎仍然在起作用……
- 切换回您的Java视角.
- 单击Eclipse窗口右上方的双箭头,然后选择Java.
- 打开debuggingtest/jni/com_sample_test_debuggingtestactivity.cpp
- 在您的主要活动将调用的第一个JNI函数中设置断点.
- 单击运行→简历( f8 )
- 您将再次获取”透视开关”消息,因此请随时切换回调试视角.
您应该只点击我们刚刚在本机代码中设置的断点!
恭喜!!!
在这一点
以上所述是小编给大家介绍的Android NDK应用程序无法达到任何断点,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/26050.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日
扫码二维码
获取最新动态