NDK联机调试

2024-03-15 19:18
文章标签 调试 ndk 联机

本文主要是介绍NDK联机调试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8807603

做NDK开发的时候,调试是比较头疼的事情;但是没有调试,有些具体的错误就无法了解。这里我流水似的介绍一下在真机下的ndk调试方案,以下是我的笔记:

NDK进行调试的时候,遇到了几个问题:

1) 需要对Android手机有root权限来设置执行一些命令

2)配置ndk-build

3)配置adbserver

4)配置adb client


调试的整体流程:

在进行调试之前,ndk-adb脚本要从手机上获取一些文件来做调试前准备(bug a);之后,将建立一个远程调试构架来调试应用程序。其中服务器端(adbserver)负责与手机通讯,本地客户端(client)将通过服务器端调试手机程序。 

=============

bug A)权限问题

=============

 在调试准备阶段,ndk-adb脚步将从手机端获取相关信息,比如 1) 位于/data/data下的app信息;还有和机器相关的应用程序: gdb.setup, app_process 和 libc.so 等文件(通过查看ndk-adb的执行日志,后两个文件分别位于手机的/system/bin 和 /system/lib下);这些目录都默认都是root的,为了在调试时能够访问,需要修改root权限为system。不然会产生如下的错误: run-as: Package 'com.example.tttt' has corrupt installation

解决方案:修改权限。

-------

sss$ adb shell

$ su

# chmod 771 /data/data

# chown system.system /data/data

参考文章:http://stackoverflow.com/questions/4873124/android-native-debug-ndk-gdb-on-htc-desire-run-as-flaw

=============

bug B)没有调试信息的问题

=============

需要在编译阶段,在ndk-build命令上加参数“NDK_DEBUG=1”

错误消息为:Verify if the application was built with NDK_DEBUG=1

具体为:打开工程的properties,修改如下图(去掉Use Default build command,在build Command中加入相关参数):

参考文章:http://tools.android.com/recent/usingthendkplugin


=============

bug C)配置远程调试--server端

=============

就是使用系统的脚本进行,命令为:

ndk-gdb --verbose --force --start --project <project/dir> --adb=/Applications/adt-bundle-mac/sdk/platform-tools/adb

建立Eclipse工具,如下图所示:


=============

bug D)配置远程调试--client端

=============

在配置client端时,有5个变量要提供;项目名称,gdb的实际位置,本地server的端口号;还有两个是运行ndk-adb进行调试准备阶段的产物(请参考bug A中的描述,分别为:gdb.setup, app_process;  因为client端只需要跟本地的server通讯,需要把gdb.setup拷贝一份,并把最后一行“target remote :5039”去掉。

具体请参考文章结尾的参考资料。

图例如下:






==============

关于对手机的root

==============

最后关于手机刷机的技术,HTC G7需要用到的软件为: unrevoked v3.2.0.92_0.93(需要跟手机的nboot匹配)。

具体请参考http://unrevoked.com/rootwiki/doku.php/public/windows_hboot_driver_install

具体请参考 NOTE:HTC刷机

关于Eclipse中配置JNI开发环境,请参考NOTE: NDK在Eclipse中的集成开发

》》参考资料

     配置NDK环境:http://www.eclipse.org/sequoyah/documentation/native_debug.php

     书籍:《Android NDK Beginner's Guide》的最后一章: Chapter11 Debugging and Troubleshooting

这篇关于NDK联机调试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/813004

相关文章

使用C/C++调用libcurl调试消息的方式

《使用C/C++调用libcurl调试消息的方式》在使用C/C++调用libcurl进行HTTP请求时,有时我们需要查看请求的/应答消息的内容(包括请求头和请求体)以方便调试,libcurl提供了多种... 目录1. libcurl 调试工具简介2. 输出请求消息使用 CURLOPT_VERBOSE使用 C

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

vscode中文乱码问题,注释,终端,调试乱码一劳永逸版

忘记咋回事突然出现了乱码问题,很多方法都试了,注释乱码解决了,终端又乱码,调试窗口也乱码,最后经过本人不懈努力,终于全部解决了,现在分享给大家我的方法。 乱码的原因是各个地方用的编码格式不统一,所以把他们设成统一的utf8. 1.电脑的编码格式 开始-设置-时间和语言-语言和区域 管理语言设置-更改系统区域设置-勾选Bata版:使用utf8-确定-然后按指示重启 2.vscode

起点中文网防止网页调试的代码展示

起点中文网对爬虫非常敏感。如图,想在页面启用调试后会显示“已在调试程序中暂停”。 选择停用断点并继续运行后会造成cpu占用率升高电脑卡顿。 经简单分析网站使用了js代码用于防止调试并在强制继续运行后造成电脑卡顿,代码如下: function A(A, B) {if (null != B && "undefined" != typeof Symbol && B[Symbol.hasInstan

php 7之PhpStorm + Nginx + Xdebug运行调试

操作环境: windows PHP 7.1.10 PhpStorm-2017.2.4 Xdebug 2.5.4 Xdebug helper 1.6.1 nginx-1.12.2 注意查看端口占用情况 netstat -ano //查看所以端口netstat -aon|findstr "80" //查看指定端口占用情况 比如80端口查询情况 TCP 0.0.0.0:8

【2025】基于Python的空气质量综合分析系统的设计与实现(源码+文档+调试+答疑)

博主介绍:     ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W+粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台的优质作者。通过长期分享和实战指导,我致力于帮助更多学生完成毕业项目和技术提升。 技术范围:     我熟悉的技术领域涵盖SpringBoot、Vue、SSM、HLMT