最近在看android上的C++的代码,有时候需要用到调试功能跟踪一些问题。以前做开发的基本都是运行在HOST上的,可以用IED的debuger直接Debug,很多问题在Debug的时候直接就可以看到了。现在没办法用IDE,在那个命令行中进行调试,其中的味道我想正在经历或是曾经经历的大全高手们都知道。。。。。。![](/images/smiles/icon_mad.gif)
闲话少说,咱进入正题。
要想用Eclipse调试Android上的C或是C++代码,首先要准备几样东西。
1、用Eclipse调用C,Eclipse当然是最重要的,CDT也是必不可少的,不然可没办法支持C或是C++的代码。所以呢。。。当然是Eclipse的CDT插件了,一定要把其中的Debuger安装上啊。
2、调试Android上的C代码,这个SDK和NDK肯定是必不可少的;当然,如果你有完整的android代码这两个东东可以不管。
3、。。。好像没有三了,嘿嘿。。。。![](/images/smiles/icon_biggrin.gif)
接下来,我们就要开始配置了
1、编译对你的C或是C++代码(如果只是一个小工程可以放到Eclipse中去编译)。如果是完整的Anroid代码,直接make -j4。
2、在Eclipse中新建一个C或C++的工程,把你的代码放到这个工程中。如果是完整的Android代码,可以选择从已有代码新建C++工程(1中编译出来的out目录也要加进来)。
3、新建一个C++远程调试工程。
4、配置这个C++远程调试工程。
4.1、设置调试应用,在android中,绝大多数情况这个应用选择app_process。如果是完整的android代码编译出来的,这个文件在out/target/product/generic/symbols/system/app下。
4.2、设置调试的C++工程。
![](http://dl.iteye.com/upload/attachment/0066/7678/8c5342c4-643c-3712-b2ee-bcf069db2241.jpg)
4.3、设置GDB程序。android需要选择arm-eabi-gdb
![](http://dl.iteye.com/upload/attachment/0066/7674/bea91afc-dd61-3259-8cd4-c05aa9428d90.jpg)
4.4、若是不是用Eclipse进行编译的,把你的代码编译出来的共享库加进来。若是完整的Android的代码编译出来的,这些文件在out/target/product/generic/symbols/system/lib下,当然,这个目录下的子目录也需要加进来(如果你确定只调试某一个LIB,也可以只加那一个)。
![](http://dl.iteye.com/upload/attachment/0066/7680/29ae249c-ee67-3427-938d-91e11fc892d0.jpg)
4.5、设置远程调试的连接信息。
![](http://dl.iteye.com/upload/attachment/0066/7682/eb07fcdf-0fd7-33d8-93c0-53a6ede9ea1e.jpg)
调试工程也配置完成了。
接下来就基本可以开始调试了。
1、启动Android设备,并打开设备的USB调试功能。
2、启动需要调试的应用,打开对应的Activity,或是通过对应的方式激活。只要这个进程存在就行,可以不在页面上。
3、用adb shell ps查看这个应用的进程号。 用这个时得搞清楚你的这些代码会跑在哪个进程中,如果不知道那就没办法进行调试了。
4、用adb forward tcp:5039 tcp:5039 把设备上的端口与主机上的端口连接起来。后两个参数是可变化的,只是一般都用的5039。第一个TCP:5039表示在主机上建立一个监听,监听端口是5039;第二个TCP:5039表示在设备上有一个监听,监听的是TCP的5039端口。我们发送到主机的5039端口的数据会被ADB发送到设备的5039端口上。第一个TCP:后的端口号必需与Eclipse中连接设置中的端口相同。
5、adb shell gdbserver --remote-debug :5039 --attach $PID 来启动GDBSEVER, PID就是3中看到的进程号。这里--remote-deubg跟的是端口号,这个号码号必需与adb forward命令中的第二个端口号相同,这里表示gdbserver启动一个TCP监听,这个监听的端口为5039
6、启动Eclipse上的设置好的C++调试工程。 Run --> Debug Hostory --> $你设置的调试工程的名称
7、开始进行调试。后面的操作与调试本地代码没有区别,就是有时反应会比本地点。
到了这里算是完了。最后就说说我对用于远程连接的几个设置或是命令的理解吧。
先来说说Eclipse上的那个连接设置,这里没太多,就是说启动远程调试的时候连接到哪个地方的信息。
然后是adb forward命令,看命令的意思就知道,它的功能就是一个转发,第一个参数设定的端口收到的数据转发到第二个参数指定的在设备上的端口,这里会建立一个监听,但是没有连接。
最后gdbserver,这里就是建议一个监听,所有的调试命令都会走这里监听的端口。
在启动调试的时候的流程就是:Eclipse建议一个连接,连接到本地指定的端口(设置为5039);因为5039是ADB在监听,而我们又设置的转发,所以ADB就连接到设备上的5039端口,并通知开始调试,设备上的5039端口上gdbserver在监听,所以接收到的就是gdbserver,它会根据接收到的命令进行相应的处理。
说了这么多,自己感觉有点晕,不知道说清楚了没有,以前没有写过这些东东。各位路过飞过的大侠们,帮忙斧正下啊…………
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0066/7674/bea91afc-dd61-3259-8cd4-c05aa9428d90-thumb.jpg)
- 大小: 116.7 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0066/7678/8c5342c4-643c-3712-b2ee-bcf069db2241-thumb.jpg)
- 大小: 97.7 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0066/7680/29ae249c-ee67-3427-938d-91e11fc892d0-thumb.jpg)
- 大小: 110.9 KB
![点击查看原始大小图片](http://dl2.iteye.com/upload/attachment/0066/7682/eb07fcdf-0fd7-33d8-93c0-53a6ede9ea1e-thumb.jpg)
- 大小: 92.4 KB
分享到:
相关推荐
在Android开发过程中,调试是必不可少的一个环节,Eclipse作为曾经主流的Android开发IDE,提供了强大的Debug功能。本文将详细介绍如何在Eclipse中进行Android应用的调试。 首先,我们需要在代码中添加断点,以便...
出现crash以后,用logcat -s DEBUG把crash的log打印保存下来,例如crash_log.txt; 然后执行 ndk-stack -sym 符号所在的目录 -dump crash_log.txt; 例如ndk-stack -sym out/target/product/mt5520_...
### Android开发——深入解析Eclipse调试与快捷键 #### 一、Eclipse Debugging详解 在Android开发过程中,使用Eclipse进行调试是非常重要的步骤之一。本文档将详细介绍Eclipse调试功能的基本使用方法,并提供一些...
在IT行业中,Eclipse是一款广泛使用的Java集成开发环境(IDE),它提供了丰富的功能,包括代码编辑、构建自动化、版本控制以及调试等。本篇文章将详细探讨在Eclipse中进行调试时的一些关键方法和快捷键,旨在帮助...
《Android IDE Eclipse ADT 插件详解》 在Android应用开发的世界中,Eclipse集成开发环境(IDE)曾经是主流的选择,而ADT(Android Development Tools)插件则是Eclipse中不可或缺的一部分。本文将深入探讨...
- 调试时,可以通过设置断点,使用Debug模式运行应用,Eclipse提供逐行执行、查看变量值等功能,帮助定位问题。 6. **模拟器与设备连接** - 开发者可以使用AVD(Android Virtual Device)管理器创建和管理模拟器...
例如,Zylin Embedded Debug (Native)选项适合嵌入式开发,并且需要指定GDB调试器路径为“arm-none-eabi-gdb.exe”。此外,如果需要输出详细的调试信息,可以勾选“verbose console mode”。 在“initialize ...
codewarrior 10.5 录制的调试方法,和资源里其他两个视频配套的。有问题可以私信我~
All logs are disabled by DebugLog when the app is released. And plus, it provides more understandable DDMS logs for developers. Usage Traditional android.util.Log usage: public static final String ...
通过Eclipse的Run或Debug按钮,选择对应的AVD或连接的物理设备,即可启动应用。如果你遇到问题,如编译错误、运行时异常等,Eclipse会给出相应的错误提示,帮助你定位问题。 总之,Android与Eclipse的集成为开发者...
"DEBUG_NATIVE_CRASH_ISSUES_WITH_GDB" 在 Qualcomm Technologies, Inc. 的文档中,我们可以看到标题 "DEBUG_NATIVE_CRASH_ISSUES_WITH_GDB",描述为 "DEBUG_NATIVE_CRASH_ISSUES_WITH_GDB",标签为 "qualcomm ...
接下来,我们将详细探讨如何在Eclipse中进行debug和与Log4j的结合使用。 **1. Eclipse Debugging基础知识** 在Eclipse中,debug模式允许我们逐行执行代码,查看每一步执行后的变量值,这在解决运行时错误和理解...
在Eclipse的“Window” -> “Preferences” -> “Java” -> “Debug” -> “Source Lookup”中,添加新的源查找路径,同样指向`<source-code-root>/platforms/android-16`。 现在,当你的应用在Android 4.1设备或...
在Android开发领域,Eclipse曾是主流的集成开发环境(IDE),尤其对于初学者来说,Eclipse提供了便捷的工具和丰富的插件支持,使得Android应用的开发变得相对简单。本资料包聚焦于"Android中文教才Eclipse开发",...
在Android开发过程中,调试是必不可少的一个环节,Eclipse作为曾经主流的Android开发IDE,提供了强大的Debug功能。本文将深入解析Eclipse中如何有效地进行Android应用的调试。 首先,添加程序断点是调试的基础。在...
确保在Eclipse的"Debug Configurations"中配置好GDB Server和本地调试器路径。 9. **构建和运行**: 最后,你可以像平常一样在Eclipse中构建和运行项目。Eclipse会自动调用NDK来编译本地代码,并将其与Java代码一起...
### Android开发之使用Eclipse Debug调试详解 在Android开发领域,使用Eclipse作为集成开发环境进行Debug调试是一项基本且重要的技能。本文将详细介绍如何在Eclipse中高效地使用Debug功能,帮助开发者更准确、快速...
1:windchill和eclipse的debug集成实现远程debug 2:在windchill中Log4J使用
在Eclipse中使用debug是软件开发中调试代码的一个重要环节,尤其对于Java开发者来说,Eclipse作为一个成熟的集成开发环境,提供了强大的调试工具和技巧。尽管图像内容无法直接查看,但是根据标题和描述,我们可以...
【Eclipse-android-免配置】:这是一个专门为Android开发者设计的Eclipse集成开发环境(IDE)的特殊版本,它已经预先配置好了一切必要的组件和设置,使得用户在下载解压后可以直接开始Android应用的开发工作,无需...