android eclipse services,Eclipse中调试Android Framework本地代码模块部分过程记录

环境:Amlogic S905M2 +

ubunt12.04 + win7 + adt_bundle_linux + Android SDK

过程:

1.

为避免用Eclipse基础版本(Luna)后需要安装包括adt、cdt等插件麻烦,直接解压adt_bundle_linux安装IDE环境

2.

调试准备:目标设备(Amlogic S905M2

)中需要有gdbserver;host主机(ubuntu)中需要交叉编译版本的gdb。gdb可采用$(AOSPROOT)\prebuilts\gcc\linux-x86\arm\arm-eabi-4.7\bin已编译好的版本(这里需要注意的是$(AOSPROOT)\prebuilts\gcc\linux-x86\arm目录下存在多个版本,选择--version执行无差错的,仅供参考),相应的在目录$(AOSPROOT)\prebuilts\misc\android-arm\gdbserver,ps:注意确保两者版本的一致性。

a4c26d1e5885305701be709a3d33442f.png

a4c26d1e5885305701be709a3d33442f.png

3. 具体步骤:

(1)新建工程项目,导入代码。启动Eclipse后,File->New Project->Makefile Project

with Existing Code

(2)点击Next,配置project,点击Finish

a4c26d1e5885305701be709a3d33442f.png

(3)设置property。载入源码为了编辑和跟踪,而不是为了编译工程,因此需要Disable编译选项。在Property窗口中的C/C++

Build中的Builder Settings中取消Use default build

command,并随意填写个编译器的名称

a4c26d1e5885305701be709a3d33442f.png

(4)编译要调试部分源码的debug版本(带调试symbol,AOSP源码在linux中编译)。

cd $(AOSPROOT)

#source

build/envsetup.sh

#lunch

$(DEVICE_MODULE_NAME)(仅限于与Amlogic S905M2 相关的device部分)

#cd

$(AOSPROOT)/framework/native/services/surfaceflinger

#vi

Android.mk (将其中的LOCAL_CFLAGS加上"

-O0 -g ")

#mm

-B LOCAL_STRIP_MODULE=false

(5)烧录。不采取整体的烧录,只将前一步骤生成的libsurfaceflinger.so上传至设备的/system/bin目录中,reboot设备重启即可

#adb

connect DeviceIP

#adb

push

$(AOSPROOT)/out/target/product/XXX/symbols/system/lib/libsurfaceflinger.so

#reboot

(6)远程调试其它配置。在Eclipse调试之前,需要告诉gdb哪里去查找标准库的符号信息,新建配置文件gdb4android.cmds,添加如下内容

set

solib-absolute-prefix

$(AOSPROOT)/out/target/product/cmcc_zhejiang/symbols

set

solib-search-path

$(AOSPROOT)/out/target/product/cmcc_zhejiang/symbols/system/bin:

solib-search-path

$(AOSPROOT)/out/target/product/cmcc_zhejiang/symbols/system/lib

(7)Debug

Configuration配置如下

a4c26d1e5885305701be709a3d33442f.png

展开Debug

Tab,设置GDB debugger和GDB command file,点击Apply后Close

a4c26d1e5885305701be709a3d33442f.png

点击Debugger的子TAB-Connection

a4c26d1e5885305701be709a3d33442f.png

(8)设置调试会话

Device端:

setprop

service.adb.tcp.port 5555

stop

adbd

start

adbd

host端:

#adb

connect DeviceIP

#adb

forward tcp:10000 tcp:10000

#adb

shell gdbserver :10000

--attach THREADIP(THREADIP为SurfaceFlinger进程ID号)

Eclipse点击Debug后,在device端任意移动焦点就可进入断点(SurfaceFlinger相关类中)

a4c26d1e5885305701be709a3d33442f.png

调试Android

Framework本地代码部分通常采用打印输出来进行调试较为普遍,而常用上述直观的断点调试在整个过程中会遇到诸多的问题,连接问题、设备弹出、设备重启需要重新设置连接等,所幸最终能成功搭建好并成功进入设置的断点,也是碰到并解决了诸多的问题,使用各种工具,mark一下^@^

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430851.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数独代码_python 实现计算数独

输入文件格式:008309100900060004007504800036000540001000600042000970005907300600010008004608200输出结果:yuan********************0 0 8 3 0 9 1 0 09 0 0 0 6 0 0 0 40 0 7 5 0 4 8 0 00 3 6 0 0 0 5 4 00 0 1 0 0 0 6 0 00 4 2 0 0 0 9 7 00 0 5…

MyEclipse配色字体等配置的解决方案

Myeclipse黑色配色方案(精心修改版) http://download.csdn.net/detail/rehongchen/6579945 如何改变Myeclipse编辑区背景色 http://my.oschina.net/epiclight/blog/465506 -------------------------------------------------------------------------…

android studio内置终端,Android Studio Terminal xx不是内部或者外部命令

背景在使用AS工具自带命令面板Terminal的时候,相信你有碰到过:xx不是内部或者外部命令,也不是可运行程序。解决办法就是配置环境变量一、在 Terminal 中使用 adb,报 adb 不是内部或者外部命令,也不是可运行的程序。解决…

python pp模块_python常用模块

1、re模块re模块用于对python的正则表达式的操作1.1 什么是正则正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正…

[Leetcode]@python 90. Subsets II.py

题目链接 https://leetcode.com/problems/subsets-ii/ 题目原文 Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain dupli…

android glu,我可以使用glu与Android NDK

Does OpenGL ES not have glu?OpenGL ES 1.1:#include #include OpenGL ES 2.0:#include #include Is there a port I can use?是的,Android的部分端口为GLU – GLU ES(支持gluErrorString,gluPerspective和许多其他功能)&#…

线程间通信 GET POST

线程间通信有三种方法:NSThread GCD NSOperation 进程:操作系统里面每一个app就是一个进程、 一个进程里面可以包含多个线程,并且我们每一个app里面有且仅有一条主线程。scrollViewDelegate 的方法 : (UIView *&…

android 恢复app 到前台,android手机把app disable了,怎么恢复

程序源代码如下:main(){int i,j,k;printf("\n");for(i1;i<5;i)    &#xff0f;*以下为三重循环*/for(j1;j<5;j)for (k1;k<5;k){if (i!k&&i!j&&j!k)    /*确保i、j、k三位互不相同*/printf("%d,%d,%d\n",i,j,k);}}main(){…

python mount回调函数_为python回调函数设置argtype

我对Python很在行&#xff0c;所以希望我能正确地表达这个问题。在整个问题涉及从Python调用C例程。我可以通过把一些相关的问题/答案凑在一起来接近&#xff0c;但我似乎不能把事情安排得很好。有两个方面&#xff1a;第一个是用指针调用C例程&#xff0c;第二个是使用回调函数…

参考 备份

原链接http://help.jd.com/Vender/question-1004.html 京东开放平台招商基础资质标准 一、基础资质标准&#xff1a; 注&#xff1a;商家可以选择京东质检平台中的第三方机构检测服务&#xff0c;申请地址&#xff1a;http://fw.jd.com/ser/list.action?page1&cid400 店铺…

android透明像素效率,android-非透明像素上的ImageView ColorFilter.夹

我有一个带位图的ImageView.该位图具有Alpha通道和透明像素.当我尝试将ColorFiter与Mode.OVERLAY(由于蜂窝)一起使用时-提供的颜色覆盖了整个imageview(整个矩形),但是我只想覆盖非透明像素.我如何裁剪imageview的画布以在需要的地方执行过滤器&#xff1f;更新我在png中有灰色…

svm预测结果为同一个值_SVM算法总结

一、1.感知机模型&#xff1a;感知器模型是SVM、神经网络、深度学习等算法的基础;感知器模型就是试图找到一条直线&#xff0c;能够把所有的“1”类和“-1”类分隔开&#xff0c;如果是高维空间中&#xff0c;感知器模型寻找的就是一个超平面&#xff0c;能够把所有的二元类别分…

iOS 动画绘制线条颜色渐变的折线图

效果图 .................... 概述 现状 折线图的应用比较广泛&#xff0c;为了增强用户体验&#xff0c;很多应用中都嵌入了折线图。折线图可以更加直观的表示数据的变化。网络上有很多绘制折线图的demo&#xff0c;有的也使用了动画&#xff0c;但是线条颜色渐变的折线图的…

python股票交易模型_如何用Python建模GGM模型并对股票估值?

内容首发乐学偶得(http://lexueoude.com) 公众号&#xff1a; 乐学Fintech用代码理解分析解决金融问题首先我们快速了解一下什么是GGM模型。GGM模型又叫做“戈登增长模型”(Gordon Growth Model&#xff0c;GGM)是用于对公司进行估值的工具。该理论假设公司的内在价值就是将所有…

android android 修改 jpg exif 属性,Android开发之使用ExifInterface获取拍照后的图片属性...

本文实例讲述了Android开发之使用ExifInterface获取拍照后的图片属性。分享给大家供大家参考&#xff0c;具体如下&#xff1a;ExifInterface exif new ExifInterface(file.getPath());String widthStr exif.getAttribute(ExifInterface.TAG_IMAGE_WIDTH);String heightStr …

[Selenium] 最大化或自定义浏览器的大小

driver.manage().window().maximize(); //将浏览器设置为最大化的状态driver.manage().window().setSize(new Dimension(600, 400)); //将浏览器的大小自定义为600*400转载于:https://www.cnblogs.com/MasterMonkInTemple/p/5212721.html

python中如何替换某列特定数值_python 怎么根据两列值,修改对应的某列值,其中一列的为需要修改的列标题...

自己造了些数据&#xff0c;不知道是否符合题主的意思。原始数据&#xff1a;no wrong_item0 001 a1 003 a2 002 b3 004 c处理后结果&#xff1a;Out[1]:no a b c0 001 1 0 02 002 0 1 01 003 1 0 03 004 0 0 1具体代码如下&#xff1a;import pandas as pd# 创建dataframe,或者…

android怎么ota升级,Android OTA升级过程

通过网络或直接本地获取到OTA升级包之后&#xff0c;通过程序就可开始Android的升级。本文描述这一过程。在获取到OTA升级包之后&#xff0c;可以直接通过android.os.RecoverySystem.installPackage()开启OTA升级。RecoverySystem.installPackage()是在API-8之后加入的&#xf…

进阶学习js中的执行上下文

在js中的执行上下文&#xff0c;菜鸟入门基础 这篇文章中我们简单的讲解了js中的上下文&#xff0c;今天我们就更进一步的讲解js中的执行上下文。 1、当遇到变量名和函数名相同的问题。 var a 10; function a(){console.log(1); } a(); //报错 如果你觉得函数a会覆盖变量a那你…

android使碎片切换界面,玩转Android中的碎片Fragment

引言&#xff1a;在Android开发中&#xff0c;我们都知道一些界面的展示经常会用到的就是Activity,但是Activity存在着很大的局限性,比如说手机上的界面显示在平板上面就会发生各种变形的问题,Activity也无法实现局部的数据刷新,所以Android3.0之后出来了Fragment,Fragment通常…