GDB + gdbserver 远程调试mediaserver进程
远程调试步骤
在Android设备上启动gdbserver并attach你想调试的进程,并指定监听调试命令的端口(此端口是TV上的端口)
$ adb shell
# ps |grep media #查看要调试进程的PID,以mediaserver进程为例
# gdbserver :1234 --attach 96 #:1234是端口号,96 是进程ID
如果设备上没有gdbserver,可以由google ndk中获取,在ndk的如下目录可以找到这个文件:
android-ndk-r8/toolchains/arm-linux-androideabi-4.9/prebuilt/android-arm
可以将此文件先推送到设备上。
进入源码服务器,比如5520编译服务器地址10.9.44.42
进入到源码工程目录下,进行环境配置,执行build文件夹下的envsetup.sh和choosecombo xx xx xx 命令,这时就可以使用gdbclient了。
adb connect 电视,成功后执行端口映射,将pc机的1234端口映射到电视1234端口
$ adb forward tcp:1234 tcp:1234 #端口映射,将pc机的1234端口映射到电视的1234端口
$ 在pc端的源码根目录下,执行 gdbclient -e mediaserver -p 1234 #从1234端口调试mediaserver
$ target remote:1234
接下来通过file命令来加载将要调试的可执行文件,对于android application来说,均为 out/target/product/generic/symbols/system/bin/app_process 这个文件,及设置搜索solib的搜索路径。
$file /home/luckychou/share/workspace/MT5520_DEV_Q3/release/android/l-pdk/out/target/product/mt5520_ll/symbols/system/bin/app_process32
$ set solib-search-path /home/luckychou/share/workspace/MT5520_DEV_Q3/release/android/l-pdk/out/target/product/mt5520_ll/symbols/system/lib
$ set solib-absolute-prefix /home/luckychou/share/workspace/MT5520_DEV_Q3/release/android/l-pdk/out/target/product/mt5520_ll/symbols/system/lib
之后,即可如调试PC端的C/C++ code一样,下断点,执行,查看内存内容,查看back trace等,来进行对library的debug工作:
If the program you’re backtracing is multi-threaded, you might want to get a backtrace for all threads:
(gdb) thread apply all bt
Another thing which is quite helpful to report is what variables were set locally at each point in the stack:
(gdb) bt full
You might want to report the output of the combination of the preceding options:
(gdb) thread apply all bt full
And if this is too much irrelevant output, you might want to keep only a few calls, such as the top 10:
(gdb) thread apply all bt full 10
If you have a large backtrace, you can log gdb output to a file (the default is gdb.txt):
(gdb) set logging on
(gdb) set logging file myfile.txt
还有很多其他gdb有用的命令,可以参考下网上的。
GDB + gdbserver 远程调试mediaserver进程的更多相关文章
- GDB + gdbserver 远程调试android native code
原文地址:GDB + gdbserver 远程调试android native code 作者:tq08g2z 以调试模拟器中的native library code为例. Host: ubuntuT ...
- gdbserver远程调试嵌入式linux应用程序方法
此处所讲的是基于gdb和gdbsever的远程调试方法.环境为:PC机:win7.虚拟机:10.04.下位机:飞嵌TE2440开发板. 嵌入式linux应用程序的开发一般都是在linux里面编写好代码 ...
- 使用gdbserver远程调试
使用gdbserver远程调试 1.默认crosstool交叉编译器没有自带gdbserver,需要自行编译 到GNU官方FTP下载,目前最新版的是gdb-6.7.1下载地址:http://ftp ...
- gdb 远程调试android进程 -转
什么是gdb 它是gnu组织开发的一个强大的unix程序调试工具,我们可以用它来调试Android上的C.C++代码. 它主要可以做4件事情: 随心所欲地启动你的程序. 设置断点,程序执行到断点处会停 ...
- gdb 远程调试android进程
原文:http://blog.csdn.net/xinfuqizao/article/details/7955346?utm_source=tuicool 什么是gdb 它是gnu组织开发的一个强大的 ...
- gdbserver 远程调试问题:设置文件和so搜索路径
编写一个必定crash 的程序 #include <stdio.h> void crash(){ char *a=0; *a=0; } int main() { printf(" ...
- vc远程调试启动进程(非attach)
被调试端设置同attach进程方式的远程调试 代码端,需要在[Project] [Properties] [Configuration Properties] [Debugging].将Debugge ...
- 在海思芯片上使用GDB远程调试
1 前言 使用海思平台上(编译工具链:arm-himix200-linux)交叉编译 GDB 工具(使用版本8.2,之前用过10.2的版本,在编译 gdbserver 遇到编译出错的问题,因为关联了其 ...
- GDB+GDBServer调试Linux应用程序
参考:http://blog.csdn.net/shanghaiqianlun/article/details/7820401 一.gdb+gdbserver总体介绍 远程调试环境由宿主机GDB和目标 ...
随机推荐
- 四. Java继承和多态9. 类与类之间的关系
类与类之间最常见的关系主要有三种:依赖(uses-a).聚合(has-a)和继承(is-a). 下面以在线书店订单系统为例,来详细的讲述这三种关系的概念. 在线书店订单系统的主要功能是:注册用户可以登 ...
- Mac上Git的安装与简单使用
一.安装: Git下载地址: http://git-scm.com/downloads/ 下载Git.配置Git: http://blog.csdn.net/reactor1379/article/d ...
- Linux下将MySQL服务添加到服务器的系统服务中
Linux下将MySQL服务添加到服务器的系统服务中 Linux环境下将MySQL服务添加到服务器的系统服务中 1.了解MySQL程序路径 MySQL数据目录: /home/mysql/dataMyS ...
- ASIHTTPRequest框架使用总结系列之阿堂教程5(上传数据)
在上篇文章中,阿堂和网友们分享了如何用ASIHTTPRequest框架下载数据的实例,本篇阿堂将数据介绍如何用ASIHTTPRequest框架上传数据的应用实例. 数据上传是通过ASIHT ...
- 面试题:Add Two Numbers(模拟单链表)
题干: You are given two non-empty linked lists representing two non-negative integers. The digits are ...
- js获取上传图片的尺寸大小
当上传图片时,有时候需要控制下上传图片的尺寸大小,需要给个提示 //获取图片的尺寸,控制尺寸大小 var reader = new FileReader(), img = new Image(); / ...
- 走进C++程序世界-----operator new delete 重载
在C++ 的世界里,new 和delete 是keyword.而在C的世界里相相应的malloc和free是函数,关键C++的new和delete分析,详见前面的章节.这里就不在过多的介绍了.链接. ...
- ASP.NET MVC学习---(三)EF简单增删改查
那么现在我们已经大概从本质上了解了ef 巴拉巴拉说了一大堆之后 总算要进入ef的正题了 总在口头说也太不行了是吧~ 没错,现在要用ef进行一些实际的操作 做什么呢? 就做一个入门级的增删改查操作吧 废 ...
- angular 中的$event 对象包含了浏览器原生的event对象
ou can pass the $event object as an argument when calling the function. The $event object contains t ...
- 转: java语法与ide级入门介绍 from: IBM dev
点评: 讲的比较初级,但是有教你使用ide (Eclipse) frrom:http://www.ibm.com/developerworks/java/tutorials/j-introtojava ...